浏览器下载.php文件,说明apache未解析php:需确认php_module已加载(httpd -m | findstr php)、addtype/addhandler正确绑定.php后缀、phpinidir路径无误且不带尾部反斜杠,并排除vc版本不兼容等底层依赖问题。

浏览器直接下载 .php 文件,说明 Web 服务器根本没有解析 PHP,而是把它当成了普通静态文件返回给浏览器。这不是 PHP 安装没成功,是 Apache(或 Nginx)压根没把请求交给 PHP 处理器。
Apache 没加载 php_module 或配置错位置
这是最常见原因:你改了 httpd.conf,但漏掉了关键两步,或者改在了被注释掉的区域里。
-
LoadModule php7_module这行必须**取消注释**,且路径指向真实的php7apache2_4.dll(注意版本和 Apache 版本匹配,如 Apache 2.4 必须用php7apache2_4.dll,不是php7apache2_2.dll) -
AddType application/x-httpd-php .php必须出现在LoadModule之后,且不能写在<ifmodule mime_module></ifmodule>之类的作用域外层被忽略的位置 - 检查
PHPIniDir路径是否正确,末尾**不要加反斜杠**,比如写成PHPIniDir "D:/php",而不是"D:/php/"
nginx 的 SCRIPT_FILENAME 路径没对上
如果你用的是 nginx + php-fpm,在 nginx.conf 里看到 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name,基本就是这个错——/scripts 是个不存在的路径。
- 改成
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name(推荐,自动适配root设置) - 或硬编码为真实路径,例如
fastcgi_param SCRIPT_FILENAME D:/nginx/html$fastcgi_script_name(注意 Windows 路径分隔符用正斜杠 /,不是 \) - 改完必须重启 nginx:
nginx -s reload,只 kill 再 start 不一定生效
PHP 扩展没启用或 php.ini 没被读到
即使 Apache 加载了模块,如果 php.ini 里关键扩展关着,或者 PHP 根本没读到这个配置文件,phpinfo() 都可能不显示,更别说执行了。
- 在
httpd.conf中确认PHPIniDir指向的是包含php.ini的**目录**,不是文件本身 - 打开
php.ini,检查extension_dir = "ext"是否正确(相对路径基于 PHP 安装根目录),且extension=php_mbstring.dll等基础扩展已取消注释 - 在
htdocs下放一个test.php,内容为<?php phpinfo(); ?>,访问时如果页面空白或报 500,大概率是php.ini加载失败或扩展缺失
真正容易被忽略的是:Windows 7 上很多教程默认用 VC9/VC10 编译的 PHP,但 Apache Lounge 提供的 Apache 2.4 是 VC11/VC14 编译的,两者运行时依赖不兼容——结果就是模块加载无声失败,日志里只有一句 Cannot load module,连错误码都不报。换对应 VC 版本的 PHP 包,比调配置更关键。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











