You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Apache虚拟主机添加CGI指令后出现404未找到错误排查

问题描述

我在Windows 10系统的Apache 2.4中尝试同时运行两个PHP版本:PHP7通过mod方式配置,PHP8计划通过CGI方式配置。分别用HTTP和HTTPS虚拟主机测试,httpd-vhosts.conf中的配置如下:

<VirtualHost 0.0.0.0:80>
   SetEnv PHPRC "C:/Program Files/PHP/php-8.1.12/"
   ScriptAlias /php8112/ "C:/Program Files/PHP/php-8.1.12/"
   Action application/x-httpd-8112 "/php8112/php.exe"
   AddType application/x-httpd-8112 .php
   <Directory "C:/Program Files/PHP/php-8.1.12/">
      <Files "php.exe">
        Require all granted
      </Files>
   </Directory>
   DocumentRoot "D:/Test/Site/public"
   ServerName test.local
   CustomLog "C:/Users/me/Logs/test_access.log" combined
   ErrorLog "C:/Users/me/Logs/test_error.log"
</VirtualHost>

<VirtualHost 0.0.0.0:443>
   DocumentRoot "D:/Test/Site/public"
   ServerName test.local
   SSLEngine on
   SSLCertificateFile "C:/Program Files/Apache24/conf/server.cert"
   SSLCertificateKeyFile "C:/Program Files/Apache24/conf/server.key"
</VirtualHost>

在D:/Test/Site/public目录下有一个简单的index.php文件:

<?php

phpinfo();

?>

HTTPS访问能正常显示PHP Info页面,但HTTP访问时出现404未找到错误。试过调整指令顺序、添加DocumentRoot的目录指令,都没效果,请问原因是什么?

问题分析与解决

核心原因

HTTP虚拟主机的配置中,AddType指令把.php文件关联到了自定义的application/x-httpd-8112类型,但Apache默认的DirectoryIndex可能未包含index.php,或者CGI映射的路径处理逻辑导致请求无法正确匹配到文件。而HTTPS虚拟主机未配置CGI相关指令,直接继承了全局的mod_php(PHP7)配置,所以能正常解析index.php。

具体解决步骤

  • 明确指定DirectoryIndex:在HTTP的<VirtualHost>块中添加以下配置,确保Apache优先解析index.php作为目录首页:
    DirectoryIndex index.php index.html
    
  • 添加DocumentRoot目录权限配置:为站点根目录添加访问权限,确保Apache能读取该目录下的文件:
    <Directory "D:/Test/Site/public">
       Require all granted
       AllowOverride None
    </Directory>
    
  • 验证PHP CGI配置:确认php-8.1.12目录下的php.exe可正常执行,且PHPRC指向的目录存在正确的php.ini文件;同时检查ScriptAlias的路径末尾斜杠与调用路径一致,避免路径解析错误。
  • 查看错误日志定位细节:打开C:/Users/me/Logs/test_error.log,查看具体错误信息(如权限提示、路径错误等),进一步精准排查问题。

补充说明

HTTPS虚拟主机因为没有单独配置CGI规则,直接使用了全局的mod_php(PHP7)来处理PHP文件,所以能正常访问index.php;而HTTP虚拟主机单独配置了PHP8的CGI处理规则,但缺少必要的目录索引和站点目录权限配置,导致Apache无法正确找到并处理index.php文件,最终返回404错误。

内容的提问来源于stack exchange,提问作者Mat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:31:10