PHP 错误处理机制

PHP 错误处理机制

做开发离不开错误处理,搞懂 PHP 的错误机制才能写出健壮的代码。

1. 错误级别

PHP 错误分几个级别:

1)致命错误(E_ERROR)

  • 脚本停止执行
  • 比如调用不存在的类、方法

2)警告(E_WARNING)

  • 脚本继续执行
  • 比如包含不存在的文件

3)注意(E_NOTICE)

  • 不影响执行
  • 比如使用未定义的变量

2. 错误报告配置

php.ini 里的配置:

; 开发环境:显示所有错误
display_errors = On
error_reporting = E_ALL

; 生产环境:不显示错误,记录日志
display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE

3. 自定义错误处理

// 设置错误报告级别
error_reporting(E_ALL);

// 自定义错误处理函数
set_error_handler(function($errno, $errstr, $errfile, $errline) {
    echo "错误:[$errno] $errstr 在 $errfile 第 $errline 行";
    return true; // 阻止默认错误处理
});

// 测试
echo $undefined_var;

4. 异常处理

try {
    if (!file_exists("test.txt")) {
        throw new Exception("文件不存在");
    }
    $file = fopen("test.txt", "r");
} catch (Exception $e) {
    echo "错误:" . $e->getMessage();
} finally {
    echo "\n执行完成";
}

5. 错误日志

// 记录错误日志
error_log("这是一条错误日志", 3, "/tmp/php_errors.log");

// 手动触发错误
trigger_error("自定义错误", E_USER_WARNING);

6. 开发 vs 生产

开发环境:

  • 显示错误
  • 所有错误都报告
  • 方便调试

生产环境:

  • 不显示错误(防止泄露敏感信息)
  • 记录错误日志
  • 只报告致命错误和警告

7. 常用技巧

1)错误抑制符 @

// 不推荐,会影响性能
@include("config.php");

2)die/exit

// 简单粗暴
if (! $db) {
    die("数据库连接失败");
}

3)抛异常

  • 推荐用异常处理
  • 代码更清晰,容易维护

总结

PHP 错误处理要点:

  • 开发环境显示错误,生产环境记录日志
  • 用 try-catch 处理异常
  • 错误日志要记录,方便排查
  • 不要用 @ 错误抑制符

写代码多做错误处理,线上少踩坑。


emer 发布于  2026-10-8 07:09