84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我可以使用 set_error_handler() 来捕获大多数 PHP 错误,但它不适用于致命 (E_ERROR) 错误,例如调用不存在的函数。还有其他方法可以捕获这些错误吗?
set_error_handler()
E_ERROR
我正在尝试调用 mail() 来解决所有错误,并且正在运行 PHP 5.2.3。
mail()
使用register_shutdown_function记录致命错误,这需要 PHP 5.2+:
register_shutdown_function
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函数。例如:
error_mail
format_error
function format_error( $errno, $errstr, $errfile, $errline ) { $trace = print_r( debug_backtrace( false ), true ); $content = "使用Swift Mailer编写error_mail函数。另请参阅:
使用Swift Mailer编写error_mail函数。
另请参阅:
$errstr
$errno
$trace
使用
register_shutdown_function
记录致命错误,这需要 PHP 5.2+:您必须定义
error_mail
和format_error
函数。例如: