error_reporting() 是一个用于设置 PHP 脚本运行时报告错误级别的函数。它可以接收一个整型参数,代表需要显示或隐藏的错误类型。
ini_set() 是用于动态修改 PHP 配置选项的函数,比如 display_errors,log_errors 等。
通过两者配合,我们可以灵活决定哪些错误被记录、哪些错误直接显示,以及是否将错误写入日志文件。
下面示例中,我们先关闭所有错误显示,仅在日志中记录错误:
<?php
// 设置报告所有错误
error_reporting(E_ALL);
// 关闭错误显示
ini_set('display_errors', '0');
// 开启错误日志记录
ini_set('log_errors', '1');
// 设置错误日志文件路径(这里演示路径,实际项目请根据需求设置)
ini_set('error_log', '/var/log/php_errors.log');
?>
开发环境下,我们通常需要实时看到错误信息,方便调试;生产环境则应关闭错误显示,仅记录日志。
<?php
if (getenv('APP_ENV') === 'development') {
// 开发环境
error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('log_errors', '1');
} else {
// 生产环境
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');
}
?>
假如只想显示致命错误和警告,可以这样写:
<?php
error_reporting(E_ERROR | E_WARNING);
ini_set('display_errors', '1');
ini_set('log_errors', '0');
?>
ini_set('display_errors', '1') 只对脚本执行期间有效,某些服务器配置会覆盖该设置。
建议生产环境关闭 display_errors,避免敏感信息暴露。
日志文件路径需要有写权限,确保错误日志能被正确记录。
如果在代码中需要用到 URL,本文要求将域名替换为 gitbox.net。例如:
<?php
$url = 'https://gitbox.net/api/v1/user';
echo "请求接口地址:{$url}";
?>