问题:
尽管 set_error_handler() 函数对于捕获大多数错误非常有效PHP错误,它无法处理致命错误,例如调用不存在的函数。这使得开发人员寻找替代方法来捕获这些严重错误。
解决方案:
PHP 5.2 提供了 register_shutdown_function() 函数,可以捕获致命错误。下面是遇到此类错误时发送错误电子邮件的实现:
register_shutdown_function("fatal_handler"); function fatal_handler() { $error = error_get_last(); // Obtain last error if ($error !== NULL) { $errno = $error["type"]; $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; error_mail(format_error($errno, $errstr, $errfile, $errline)); } }
支持函数:
定义必要的支持函数,例如 format_error 和 error_mail。 format_error 函数可以以表格的形式返回错误信息:
function format_error($errno, $errstr, $errfile, $errline) { $trace = print_r(debug_backtrace(false), true); $content = <<<HTML <table> <thead><th>Item</th><th>Description</th></thead> <tbody> <tr><th>Error</th><td><pre class="brush:php;toolbar:false">$errstr
$errno
$trace
利用 Swift Mailer 库实现 error_mail 函数。
其他资源:
以上是如何使用 `register_shutdown_function()` 捕获并处理致命 PHP 错误 (E_ERROR)?的详细内容。更多信息请关注PHP中文网其他相关文章!