ホームページ > バックエンド開発 > PHPチュートリアル > 「register_shutdown_function()」を使用して PHP の致命的なエラーをキャッチするにはどうすればよいですか?

「register_shutdown_function()」を使用して PHP の致命的なエラーをキャッチするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-26 19:36:13
オリジナル
798 人が閲覧しました

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

PHP の致命的なエラーのキャッチ

PHP の set_error_handler() は、致命的なエラー (E_ERROR) をキャプチャしようとすると失敗することがよくあります。これは、存在しない関数呼び出しや、致命的なエラーを引き起こすその他のインスタンスを操作する場合に特に問題になります。

この制限を回避するには、バージョン 5.2 の PHP の 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 関数を定義します。以下に例を示します。

function format_error($errno, $errstr, $errfile, $errline) {
    // Code to format and display error information goes here
}
ログイン後にコピー

error_mail 機能に Swift Mailer の使用を検討してください。

追加の参照については、次のリソースを参照してください。

  • $php_errormsg
  • 事前定義された定数

以上が「register_shutdown_function()」を使用して PHP の致命的なエラーをキャッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート