PHP错误不显示需先开启display_errors=On和error_reporting=E_ALL,并重启服务器;若仍不显示,检查脚本是否用ini_set或error_reporting覆盖配置;生产环境应关闭display_errors,改用log_errors写入日志;Apache 500错误可能记录在自身ErrorLog中。
PHP 错误不显示?检查 display_errors 和 error_reporting
默认情况下,PHP 生产环境会关闭错误显示(display_errors = Off),即使代码出错,页面也只空白或返回 500,看不到任何提示。必须手动开启才能在浏览器中看到报错信息。
操作步骤:
- 找到当前生效的
php.ini文件(运行php --ini或phpinfo()查看 “Loaded Configuration File”) - 修改以下两项:
display_errors = Onerror_reporting = E_ALL - 重启 Web 服务器(如 Apache 或 PHP-FPM)
注意:display_errors = On 仅适用于开发环境,线上务必关掉,否则可能暴露路径、变量、数据库结构等敏感信息。
开启了 display_errors 还是没报错?确认脚本没覆盖配置
PHP 脚本里用 ini_set() 或 error_reporting() 函数可动态修改错误设置,它们优先级高于 php.ini,容易被已有代码悄悄关掉错误显示。
立即学习“PHP免费学习笔记(深入)”;
排查方法:
- 在出问题的脚本开头加一行:
var_dump(ini_get('display_errors'), error_reporting()); - 搜索项目中是否调用了:
ini_set('display_errors', '0')或error_reporting(0) - 某些框架(如 Laravel、ThinkPHP)会在入口文件或启动流程中强制设为 0,此时需改用日志方式查错
错误不显示但想保留记录?配置 error_log 写入文件
比直接显示更安全、更可持续的方式是把错误写进日志文件,尤其适合无法修改 php.ini 的共享主机或容器环境。