根本原因是Alias路径不继承DocumentRoot的PHP处理器与执行权限;必须用显式授权Require all granted并配置AddHandler或SetHandler,且路径须与Alias真实路径完全一致、大小写匹配、加英文双引号。

Apache虚拟目录下PHP文件不解析,根本原因不是PHP没装好,而是Apache没把.php文件交给PHP模块处理——它可能当纯文本返回、直接下载,或返回空白页。必须让Apache明确知道:这个别名路径下的.php,也要走PHP执行流程。
检查块是否显式授权并绑定PHP处理器
Alias指向的路径默认不继承DocumentRoot的PHP处理规则和执行权限,必须用
- Require all granted(Apache 2.4+必需,旧版Allow from all已失效)
- AddHandler application/x-httpd-php .php(模块模式)或SetHandler "proxy:fcgi://127.0.0.1:9000"(FPM模式)
注意:
确认AllowOverride设置是否允许handler生效
如果
- 改成AllowOverride FileInfo(最小必要权限,允许AddHandler/Options等)
- 或AllowOverride All(方便调试,但生产环境慎用)
- 临时重命名该目录下的.htaccess测试,排除其意外覆盖规则
验证PHP模块是否对当前上下文有效
运行apache2ctl -t -D DUMP_MODULES | grep php(Linux)或httpd -M | findstr php(Windows),确认php8_module在列表中。若无,说明模块未启用或被禁用。还需检查:
- 是否误用了SetHandler application/x-httpd-php(顶层写法会强制所有文件走PHP,包括图片/js)
- 是否混用CGI/FPM与模块模式(比如启用了php-fpm,却还在用AddHandler)
- Windows下是否加载了正确的php8apache2_4.dll(必须是TS线程安全版)
排查路径拼接与权限干扰
Alias路径不经过DocumentRoot,$document_root变量失效,SCRIPT_FILENAME易出错。常见表现是空白页或404:
- 确保Apache进程用户(如www-data、SYSTEM)对Alias目标目录有读取+执行权限
- 避免路径含中文、空格、长路径;Windows下统一用正斜杠/或双反斜杠\
- 用curl -I访问test.php,看Content-Type是否为text/html;若为application/octet-stream,说明被当二进制下载了
- 检查php.ini加载路径是否正确(通过phpinfo()确认Loaded Configuration File是Apache用的那个)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











