php - 寻找通用的 PHP error_handler

标签 php error-handling

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

我发现了以下项目,但大多数看起来都很古老且很小。

我主要想要:

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

如何在 php 中完成此操作?

最佳答案

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

在我看来,最好的做法是抛出 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:如果您想对 fatal error 执行某些操作(我想到的是日志记录),您可以使用 register_shutdown_function

注意#2:您说过您找到的类(class)/项目很小。有两件事。首先,你无法用 LOC 来衡量代码有多好。其次,错误并没有多大关系。

编辑:

一般来说,在开发新项目时从头开始重新实现所有内容并不常见,甚至是 Not Acceptable 。您应该构建自己的库一次,然后在您的项目中使用它们。就我个人而言,我使用 KLogger用于记录东西,我对此很满意。

关于php - 寻找通用的 PHP error_handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15086116/

相关文章:

c++ - clang-format 功能和错误检查在同一行

PHP 如何编辑我刚刚创建的数据库条目? (基本的)

php - 使用 php 和/或 jquery 过滤 mysql 搜索结果

javascript - 根据node.js中的错误代码进行错误处理

asp.net-mvc - 在 ASP.NET MVC 中覆盖 `HandleErrorAttribute`

输入 '|' 时出现 Haskell 解析错误

php - 使Laravel 8 Slug变量不区分大小写

php - 合并两个 mp3 php

PHP不显示数据

php - 如何在 PHP 中获取请求原始数据?