首頁 >後端開發 >php教程 >如何使用 register_shutdown_function 捕捉致命的 PHP 錯誤?

如何使用 register_shutdown_function 捕捉致命的 PHP 錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-22 19:41:15372瀏覽

How Can I Catch Fatal PHP Errors Using register_shutdown_function?

透過註冊關閉函數捕獲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
$errno
File $errfile Line $errline Trace
$trace
HTML; return $content; }

來處理郵件功能,定義error_mail 函數並考慮使用像Swift Mailer 這樣的函式庫。

其他資源:

  • [PHP錯誤處理](https://www.php.net/manual/en/features.error-handling.php)
  • [$php_errormsg](https://www.php.net/manual/en /保留.variables.php#constant.$php_errormsg)

以上是如何使用 register_shutdown_function 捕捉致命的 PHP 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn