PHP错误级别控制通过error_reporting函数和php.ini配置实现,核心是按环境区分错误显示与记录:开发时用E_ALL & ~E_NOTICE等动态设置并开启display_errors,生产环境关闭display_errors、启用log_errors写入指定日志文件。

PHP错误级别控制主要通过error_reporting函数和php.ini配置实现,核心是明确要显示或记录哪些类型的错误,避免开发时漏掉警告、上线后暴露敏感信息。
一、运行时动态设置错误级别(推荐用于调试)
在PHP脚本开头(最好在第一行)调用error_reporting(),可即时生效。常用组合如下:
-
显示所有错误(含E_DEPRECATED、E_USER_WARNING等):
error_reporting(E_ALL); -
开发环境常用(显示除通知类以外的所有错误):
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT); -
生产环境推荐(只报致命/运行时错误):
error_reporting(E_ERROR | E_WARNING | E_PARSE); -
完全关闭错误显示(但不关闭日志记录):
error_reporting(0);
二、配合display_errors控制是否输出到页面
仅设error_reporting还不够,需同步控制是否把错误打印到浏览器:
- ini_set('display_errors', '1'); —— 开启(开发用)
- ini_set('display_errors', '0'); —— 关闭(生产必须)
- 注意:
display_errors为Off时,错误仍可记录到日志(见下一项)
三、启用错误日志并指定路径
生产环境务必开启日志,便于排查问题:
立即学习“PHP免费学习笔记(深入)”;
- ini_set('log_errors', '1'); —— 启用错误日志
- ini_set('error_log', '/var/log/php_errors.log'); —— 指定日志文件(确保Web服务器有写权限)
- 也可在
php.ini中统一配置:
log_errors = On
error_log = /var/log/php_errors.log
四、全局配置:修改php.ini(最彻底的方式)
编辑服务器的php.ini文件,找到并修改以下几行:
- error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
- display_errors = Off(线上必须关)
- log_errors = On
- error_log = /var/log/php_errors.log
修改后需重启Web服务(如sudo systemctl restart apache2或sudo systemctl restart php-fpm)才生效。



















