首页 >后端开发 >php教程 >如何使用'register_shutdown_function()”捕获 PHP 致命错误?

如何使用'register_shutdown_function()”捕获 PHP 致命错误?

Barbara Streisand
Barbara Streisand原创
2024-12-26 19:36:13793浏览

How Can I Catch PHP Fatal Errors Using `register_shutdown_function()`?

捕获 PHP 致命错误

PHP 的 set_error_handler() 在尝试捕获致命错误 (E_ERROR) 时通常会出现不足。当处理不存在的函数调用或其他触发致命错误的实例时,这变得尤其成问题。

要解决此限制,您可以使用 PHP 的 register_shutdown_function() 版本 5.2 。以下代码片段演示了其实现:

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $errfile = "unknown file";
    $errstr = "shutdown";
    $errno = E_CORE_ERROR;
    $errline = 0;

    $error = error_get_last();

    if ($error !== NULL) {
        $errno = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr = $error["message"];

        error_mail(format_error($errno, $errstr, $errfile, $errline));
    }
}

要完成该解决方案,请定义 error_mail 和 format_error 函数。下面是一个示例:

function format_error($errno, $errstr, $errfile, $errline) {
    // Code to format and display error information goes here
}

考虑使用 Swift Mailer 来实现 error_mail 功能。

有关其他参考,请浏览以下资源:

  • $php_errormsg
  • 预定义常量

以上是如何使用'register_shutdown_function()”捕获 PHP 致命错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn