如何捕获PHP致命错误(`E_ERROR`)?
P粉978551081
P粉978551081 2023-08-27 14:42:20
0
1
503

我可以使用 set_error_handler() 来捕获大多数 PHP 错误,但它不适用于致命 (E_ERROR) 错误,例如调用不存在的函数。还有其他方法可以捕获这些错误吗?

我正在尝试调用 mail() 来解决所有错误,并且正在运行 PHP 5.2.3。

P粉978551081
P粉978551081

全部回复 (1)
P粉576184933

使用register_shutdown_function记录致命错误,这需要 PHP 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_mailformat_error函数。例如:

function format_error( $errno, $errstr, $errfile, $errline ) { $trace = print_r( debug_backtrace( false ), true ); $content = "

使用Swift Mailer编写error_mail函数。

另请参阅:

表>”; 返回$内容; }
Item Description
Error
$errstr
错误号
$errno
文件 $错误文件
$错误线
跟踪
$trace
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!