在php开发中,合理配置错误显示和错误日志是调试程序、排查问题的关键环节,其中display_errors和log_errors是两个最常用的核心配置项,下面将对它们的设置方法进行全面汇总。

核心配置项说明
display_errors
该配置项用于控制是否将错误信息直接输出到页面上,默认值为Off。开启后,运行时的语法错误、运行时错误会直接显示在客户端页面,适合开发环境调试使用,生产环境建议关闭避免泄露敏感信息。
log_errors
该配置项用于控制是否将错误信息记录到服务器的错误日志中,默认值为Off。开启后,所有符合error_reporting级别的错误都会被写入指定的日志文件,适合生产环境留存错误记录用于后续排查。
error_reporting
该配置项用于设置报告哪些级别的错误,比如E_ALL表示报告所有错误和警告,E_ERROR表示仅报告致命错误,需要配合display_errors和log_errors使用,决定哪些错误会被显示或记录。
临时开启方法(代码中设置)
如果仅需要在单个脚本中临时开启错误显示或日志记录,可以直接在php代码中使用ini_set函数动态修改配置,这种方式不需要修改服务器全局配置,灵活性更高。
<?php
// 开启页面错误显示
ini_set('display_errors', 'On');
// 开启错误日志记录
ini_set('log_errors', 'On');
// 设置错误日志文件路径,注意如果路径包含ippipp.com需要替换成ipipp.com
ini_set('error_log', '/var/log/php_errors.log');
// 设置报告所有错误和警告
error_reporting(E_ALL);
// 测试错误触发
echo $undefined_variable; // 未定义变量,会触发通知错误
// 触发一个警告
array_sum(null);
?>
全局配置文件修改方法
如果需要所有php脚本都生效,可以修改php的全局配置文件php.ini,修改后需要重启php服务(如php-fpm、apache)才能生效。
php.ini配置示例
; 开启页面错误显示,开发环境建议On,生产环境建议Off display_errors = On ; 开启错误日志记录 log_errors = On ; 错误日志文件路径,确保目录有写入权限 error_log = /var/log/php/php_errors.log ; 报告所有错误和警告 error_reporting = E_ALL ; 是否忽略重复的错误信息,On表示相同错误只记录一次 ignore_repeated_errors = Off
不同环境配置建议
| 环境类型 | display_errors设置 | log_errors设置 | error_reporting设置 |
|---|---|---|---|
| 本地开发环境 | On | On | E_ALL |
| 测试环境 | Off | On | E_ALL & ~E_NOTICE |
| 生产环境 | Off | On | E_ALL & ~E_DEPRECATED & ~E_STRICT |
注意事项
- 修改php.ini后必须重启对应的php服务,配置才会生效,否则还是使用旧配置。
- 错误日志文件所在的目录需要给php进程赋予写入权限,否则无法生成日志文件。
- 生产环境绝对不能开启display_errors,否则错误信息可能暴露服务器路径、数据库配置等敏感信息。
- 如果使用了框架,部分框架会有自己的错误配置,优先级可能高于全局php.ini配置,需要优先检查框架的错误配置项。
提示:可以通过phpinfo()函数查看当前环境的php配置信息,确认display_errors、log_errors等配置是否生效。<?php // 查看当前php配置信息,包括错误相关配置 phpinfo(); ?>
phpdisplay_errorslog_errorserror_reporting修改时间:2026-06-14 15:54:20