发布于2026-07-04 阅读(0)
扫一扫,手机访问
在 CentOS 环境下用 PHP 做开发,错误处理这块儿是个绕不过去的话题。今天就来聊几种常见的实现方式——从基础的异常捕获到全局配置,再到自定义回调,基本能覆盖日常开发中的大部分场景。

这是最直接的一种方式,适用于那些你能预判到可能出错的代码块。比如数据库查询、文件读写之类的操作,包在 try 里,出问题了就交给 catch 处理:
try {
// 你的代码
throw new Exception("出错了");
} catch (Exception $e) {
echo "捕获到异常:" . $e->getMessage();
}
需要说明的是,try-catch 主要针对 异常(Exception),而不是所有错误(比如 PHP 的 Notice、Warning)。所以它适合用在业务逻辑层,配合自定义异常类来用会更顺手。
这种方法更偏全局配置。在脚本里直接用 error_reporting 设定级别,然后用 ini_set 决定错误是显示在屏幕上,还是记到日志里,还是两者都做:
// 设置错误报告级别
error_reporting(E_ALL);
// 设置错误处理方式
ini_set('display_errors', 1); // 将错误显示在页面上
ini_set('log_errors', 1); // 将错误记录到日志文件中
ini_set('error_log', '/var/log/php_errors.log'); // 指定错误日志文件的路径
真实项目中,生产环境一般会把 display_errors 关掉(设为 0),只开启日志记录,避免把敏感信息暴露给用户。调试阶段则可以临时打开显示,方便排查问题。
如果用的是 Apache,并且项目根目录下允许使用 .htaccess,那可以直接在里边写配置,跟 php.ini 或 ini_set 效果一样,但不需要修改脚本:
# 设置错误报告级别
php_value error_reporting E_ALL
# 设置错误处理方式
php_value display_errors 1
php_value log_errors 1
php_value error_log /var/log/php_errors.log
这种方式的好处是全局生效,一个配置就能覆盖整个项目,尤其适合多站点共用一个 PHP 环境的情况。不过记得确认 Apache 是否开启了 AllowOverride,否则规则不会生效。
如果你希望按自己的逻辑来响应错误——比如记录到特定格式的日志、发邮件报警、或者直接跳转到友好页面——那就可以写一个自定义函数,然后通过 set_error_handler 注册进去:
function custom_error_handler($errno, $errstr, $errfile, $errline) {
echo "捕获到错误:[$errno] $errstr 在 $errfile 的第 $errline 行";
// 可以在这里记录错误日志、发送邮件通知等
return true; // 返回 true 表示已处理错误,不再显示默认错误信息
}
// 设置自定义错误处理函数
set_error_handler("custom_error_handler");
注意,这个函数只能处理 PHP 的非致命错误(如 Warning、Notice),致命错误(如 Parse Error、Fatal Error)是捕获不到的。不过对于绝大多数业务场景已经足够用了。如果想要连致命错误也兜底,可以再搭配 register_shutdown_function 来配合。
总结一下,没有银弹。开发阶段多用 try-catch 加 display_errors 来快速定位;线上环境用 error_log 加自定义处理函数保持稳定。根据项目阶段和架构灵活组合,才能把错误控制在可控范围内。
上一篇:centos php服务如何重启
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8