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

如何使用'register_shutdown_function()”捕捉 PHP 致命錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-26 19:36:13792瀏覽

How Can I Catch PHP Fatal Errors Using `register_shutdown_function()`?

捕捉 PHP 致命錯誤

PHP 的 set_error_handler() 在嘗試捕捉致命錯誤 (E_ERROR) 時通常會出現不足。當處理不存在的函數呼叫或其他觸發致命錯誤的實例時,這變得尤其成問題。

要解決此限制,您可以使用 PHP 的 register_shutdown_function() 版本 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_mail 和 format_error 函數。以下是範例:

function format_error($errno, $errstr, $errfile, $errline) {
    // Code to format and display error information goes here
}

考慮使用 Swift Mailer 來實作 error_mail 功能。

其他參考,請瀏覽以下資源:

  • $php_errormsg
  • 預定義常數

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

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