PHP info不显示主因是请求未进入PHP解析流程,需依次确认:Web服务器是否识别.php文件、PHP是否真正加载运行、相关配置是否禁用输出。

PHP 安装完了,phpinfo() 就是不显示——不是 PHP 没装好,而是请求压根没进 PHP 解析器。Win7 下最常卡在这三步:Web 服务器没把 .php 文件交出去、PHP 模块加载失败、或配置路径写错导致 php.ini 根本没读到。
浏览器访问 info.php 显示源码或直接下载
这说明 Apache(或 Nginx/IIS)完全没调用 PHP,只当它是普通文本返回了。重点查三处:
-
LoadModule php_module或LoadModule php7_module这行必须取消注释,且 DLL 路径要真实存在(比如D:/php/php7apache2_4.dll),注意 Apache 2.4 必须配php7apache2_4.dll,不能用php7apache2_2.dll -
AddHandler application/x-httpd-php .php必须出现在LoadModule之后,且不能被<IfModule mime_module>等作用域包裹而失效 -
PHPIniDir "D:/php"路径必须指向含php.ini的目录,**末尾不能带反斜杠**("D:/php/"是错的)
phpinfo() 页面空白或返回 500 错误
Apache 启动了,也尝试调 PHP,但 PHP 进程崩溃或初始化失败。立刻去看 Apache/logs/error.log 最后几行:
- 出现
unable to load dynamic library 'D:\php\ext\php_mysqli.dll' - %1 is not a valid Win32 application→ PHP 和 DLL 位数/线程安全模式不匹配(比如 PHP 是 TS 版,却用了 NTS 的php_imagick.dll) - 出现
Cannot load module或Access is denied→ 杀毒软件拦了httpd.exe或php-cgi.exe,需将 Apache/PHP 目录加到排除项,并关掉主动防御 - 日志里只有
Premature end of script headers→ 扩展冲突或memory_limit太小,可临时在php.ini中设memory_limit = 256M测试
命令行 php -v 正常但 phpinfo() 不生效
说明 PHP 本身可运行,但 Web 集成层断开了。验证四件事:
立即学习“PHP免费学习笔记(深入)”;
- 执行
php --ini,确认Loaded Configuration File路径和PHPIniDir一致;若显示(none),就是配置没加载 - 执行
php -m | findstr imagick(或其他扩展名),检查扩展是否真能载入;若报 DLL 找不到,要手动把CORE_RL_*.dll等依赖文件放进PHP安装根目录(不是ext子目录) - 检查
php.ini里short_open_tag = On是否开启(尤其老项目用缩写时) - 确保
display_errors = On且error_reporting = E_ALL,否则语法错误会静默失败
Win7 下最容易被忽略的是:杀软拦截、DLL 位数混搭、PHPIniDir 路径末尾多一个 /、以及 CORE_RL_*.dll 这类 ImageMagick 依赖没放对位置——它们不报错,但会让整个模块加载静默失败。



















