通过注册关闭函数捕获 PHP 致命错误
问题:
而 set_error_handler() 可以处理大多数 PHP 错误,它无法捕获致命错误(E_ERROR),例如
解决方案:
PHP 5.2 引入了 register_shutdown_function,它允许您记录致命错误:
register_shutdown_function("fatal_handler"); function fatal_handler() { // Capture error information $error = error_get_last(); if ($error) { error_mail(format_error( $error["type"], $error["message"], $error["file"], $error["line"] )); } }
定义format_error函数用于格式化错误信息:
function format_error($errno, $errstr, $errfile, $errline) { // Generate the error trace $trace = print_r(debug_backtrace(false), true); // Format the error information $content = <<<HTML <table border="1"> <thead> <th>Item</th> <th>Description</th> <thead> <tbody> <tr> <td>Error</td> <td><pre class="brush:php;toolbar:false">$errstr
$errno
$trace
来处理邮件功能,定义 error_mail 函数并考虑使用像 Swift Mailer 这样的库。
其他资源:
以上是如何使用 register_shutdown_function 捕获致命的 PHP 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!