PHP 开发必备:如何正确开启并显示 PHP 错误信息?
常见问题场景
许多 PHP 开发者在调试代码时都曾遇到这样的困境:明明已经在 php.ini 配置文件中将 display_errors 参数设置为开启状态,错误报告级别也调整到了最详细的 E_ALL,甚至反复重启了 Apache 或 Nginx 服务器,但浏览器中依然无法看到任何错误提示信息。

更令人困惑的是,即使在脚本文件的最开始位置加入下面这两行被认为“强效”的代码,似乎也毫无作用。例如,故意在变量声明时遗漏美元符号“$”,或者在语句结尾忘记添加分号“;”——这类基础的语法解析错误,往往只会返回一个完全空白的页面。问题的根源究竟在哪里?我们该如何有效配置,才能确保所有 PHP 错误和警告都能清晰地展示在浏览器中呢?
error_reporting(E_ALL);
ini_set('display_errors', 1);
如果常规方法都已尝试无效,还有哪些关键的配置项需要检查?
高效解决方案
根据广泛的开发经验总结,以下这组配置指令的组合成功率显著更高:
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
这里有一个至关重要的细节:display_startup_errors 这个专用指令负责捕获 PHP 引擎在初始化启动阶段发生的错误,将其与 display_errors 结合使用,才能实现更全面的错误信息覆盖。
然而,必须特别注意!上述通过代码动态设置的方法,对于一类特殊的错误——语法解析错误(Parse Error)——通常是无效的。其根本原因在于,如果脚本在语法解析阶段就无法通过,那么后续用于控制错误显示的 PHP 代码根本没有机会被执行。
那么,如何让这些“顽固”的解析错误也显示出来呢?最彻底的方法是直接修改服务器上的 php.ini 核心配置文件,请确认其中包含如下设置:
display_errors = on
如果您没有权限直接修改服务器的全局 php.ini 文件(例如在使用虚拟主机或共享主机时),也无需担心。还有一个替代方案:尝试在您网站项目的根目录下的 .htaccess 文件中加入以下指令,它有时也能达到相同的配置效果:
php_flag display_errors 1
加入 PHP 技术交流社区
群名称:PHP源码大全
QQ群号:907415141
