PHP错误提示默认关闭,需通过php.ini设display_errors=On和error_reporting=E_ALL并重启服务器;临时开启可用ini_set();白屏时应查error_log日志。

PHP 错误提示默认常被关闭,尤其是用 XAMPP、WAMP 或宝塔等集成环境时——不是 PHP 本身不报错,而是 display_errors 被设为 Off,或 error_reporting 级别太低。打开它,是调试最基础也最关键的一步。
确认当前错误报告级别和显示开关
光改配置不一定生效,得先看 PHP 实际加载的是哪个 php.ini 文件,以及运行时的设置是否被覆盖。
- 新建一个
info.php文件,内容为: - 浏览器访问该文件,搜索
Loaded Configuration File,找到真实生效的php.ini路径 - 再搜索
display_errors和error_reporting,看它们的Local Value(运行时值)是否为Off或0
在 php.ini 中永久开启错误提示
编辑上一步查到的 php.ini,找到并修改以下两行(注意:不要只改注释掉的那行,要改实际生效的行):
display_errors = On error_reporting = E_ALL
改完必须重启 Web 服务器(如 Apache 或 Nginx),否则不生效。Windows 下重启 WAMP/XAMPP 的服务图标;Linux 宝塔面板点「重启」PHP 服务即可。
立即学习“PHP免费学习笔记(深入)”;
-
E_ALL包含所有错误、警告、通知,适合开发阶段 - 生产环境绝不能设
display_errors = On,会暴露路径、变量、数据库结构等敏感信息 - 如果找不到这两行,可直接在
[XDebug]段落下方或文件末尾追加,但需确保没被其他地方用ini_set()覆盖
临时开启(无需改配置,适合测试)
在 PHP 脚本开头加入这几行,能绕过 php.ini 限制(但前提是 display_errors 没被系统级禁用,如某些共享主机):
注意:display_startup_errors 控制 PHP 启动阶段错误(如扩展没加载)是否显示,常被忽略,但它对排查“页面空白”特别有用。
- 这段代码必须放在所有输出之前(包括空格、BOM 字符),否则会报
Cannot modify header information - 如果仍不显示错误,说明服务器禁用了
ini_set(),此时只能靠改php.ini或联系管理员
为什么开了还看不到错误?常见卡点
开了配置却还是白屏或 500,往往不是没开,而是错误类型或触发时机不对。
- 语法错误(如少分号、括号不匹配)发生在解析阶段,
display_errors = On有效;但若启用了 OPcache 且缓存了旧文件,可能看到的是旧报错或无报错——清空 OPcache 或临时关掉它 - 致命错误(
Fatal error)默认会被显示,但Parse error在 CLI 模式下才一定输出到终端,Web 模式依赖display_errors - 某些框架(如 Laravel)或 CMS(如 WordPress)会接管错误处理,屏蔽原生提示——先在入口文件(如
index.php)顶部加临时error_reporting,再逐步排查 - 日志没开:
log_errors = On和error_log = /path/to/php_error.log建议一并打开,白屏时直接查日志最可靠
真正麻烦的不是“怎么开”,而是开了之后发现错误藏在 include 文件里、或者被 try-catch 吞掉了。盯着 error_log 文件比反复刷网页更省时间。











