透過註冊關閉函數捕獲PHP 致命錯誤
問題:
而set_or_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中文網其他相關文章!