寻找通用的PHP error_handler

时间:2013-02-26 10:00:29

标签: php error-handling

我想覆盖默认的PHP错误处理程序。我确定这已经无数次实现了。

我找到了以下项目,但大多数看起来都很老旧。

我主要想拥有:

  • 开发模式,只显示所有错误/通知
  • 生产模式,允许向用户显示干净的自定义布局页面
  • 记录到文本文件(我没有网络服务器的管理员权限,因此无法通过PHP设置进行设置)
  • 发送严重错误的警告电子邮件
  • 登录数据库

如何在php中完成?

1 个答案:

答案 0 :(得分:2)

您可以使用set_error_handler函数设置自定义错误处理程序,然后使用它执行任何操作。

最佳做法IMO是在发生错误时抛出ErrorException并使用try/catch处理它(注意:处理时我并不是指隐藏错误)。例如:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

try {
    //Some code that may produce error
} catch (ErrorException $e) {
    $someLogger->log($e->getMessage());
}

您可以拥有自己的自定义类来代替记录器,以实现您的要求。因此,如果已有的任何源满足您的需求,请使用一个,否则创建。

注意#1:如果您想对致命错误执行某些操作(记录在我脑海中),您可以使用register_shutdown_function

注意#2:您说您找到的课程/项目很小。有两件事。首先,您无法衡量LOC的代码质量。其次,那里与错误并​​没有多大关系。

修改

一般而言,在开发新项目时,从地面重新实施所有内容并不常见,甚至不可接受。您应该构建一次自己的库,然后在项目中使用它们。就个人而言,我使用KLogger来记录内容,我很满意。