PHP探针为何显示空白页_PHP探针显示空白页原因【排查】

PHP探针返回空白页主因是错误被静默屏蔽:display_errors=Off且error_log不可写,或存在Parse/Fatal错误、短标签、废弃函数、内存不足等问题。

PHP探针脚本执行后返回空白页,大概率是 PHP 解析失败或致命错误被静默屏蔽

不是探针写错了,而是 PHP 遇到 Parse errorFatal errormemory_limit 耗尽时,默认不输出任何内容——尤其当 display_errors = Offlog_errors = On 时,错误全进日志,页面就空着。

检查 error_log 和 display_errors 设置是否生效

空白页最常见原因是错误被压制。先确认 PHP 是否真在报错:

  • display_errors 必须为 On(开发环境),否则 echo 前的致命错误不会显示
  • error_reporting 推荐设为 E_ALL,否则 NoticeWarning 也看不到
  • 查看 error_log 文件路径(用 phpinfo()error_log 行),直接 tail 日志:
    tail -f /var/log/php_errors.log
  • 若用 N

    ginx + PHP-FPM,还需确认 php-fpm.conf 中的 catch_workers_output = yes,否则 worker 内部错误不透出

探针文件本身存在语法或兼容性问题

很多网上流传的 PHP 探针(如 phpinfo.php 或老旧 tz.php)含过时函数或短标签,PHP 7.4+ 默认禁用 short_open_tag,导致整页不解析:

  • 打开探针文件,确认首行是 ,而非 (短标签)
  • 检查是否调用了已废弃函数,如 mysql_connect()(PHP 7.0+ 移除)、eregi()(PHP 5.3+ 废弃)
  • 部分探针用 ini_get_all() 获取全部配置,但某些 Suhosin 或硬编码安全模块会拦截该函数,返回空数组甚至触发 fatal
  • 如果探针里有 shell_exec('uname -a') 类调用,确认 disable_functions 没把它列进去(查 phpinfo()disable_functions 行)

内存不足或超时导致脚本中断无输出

探针常做大量 extension_loaded()function_exists()get_loaded_extensions() 扫描,小内存 VPS 容易崩:

  • 临时提高内存限制:
    ini_set('memory_limit', '256M');
    放在探针开头(注意:必须在任何输出前)
  • 检查 max_execution_time,探针若遍历目录或读取大文件可能超时,可加:
    set_time_limit(30);
  • 若用 cPanel 或 Plesk,其自带 PHP 运行模式(如 suPHP、LSAPI)可能对 scandir() 等敏感函数限权,导致静默失败

真正卡住的地方,往往是 display_errors = Offerror_log 路径不可写两个条件同时成立——错误既不显示,又没地方记,只剩空白。动手前先确认这两个值,比重传探针文件有用得多。