「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 「register_shutdown_function()」を使用して PHP で致命的なエラーを検出するにはどうすればよいですか?

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

2025 年 1 月 24 日に公開
ブラウズ:861

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

register_shutdown_function による PHP 致命的エラーの捕捉

PHP では、set_error_handler() はほとんどのエラーの処理に役立ちます。ただし、存在しない関数の呼び出しによって発生するような致命的なエラーは捕捉できません。この制限に対処するには、register_shutdown_function を利用します。

register_shutdown_function の使用

register_shutdown_function() は、PHP のシャットダウン時に呼び出すことができる関数です。ユーザー定義関数をパラメータとして受け取ります。この関数は、実行中に発生した未処理のエラーをキャプチャできます。

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $error = error_get_last();
    if ($error !== NULL) {
        // Extract error information
        $errno = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr = $error["message"];
        // Send error details via email using error_mail
        error_mail(format_error($errno, $errstr, $errfile, $errline));
    }
}

追加関数

上記のコードでは、error_mail と format_error という 2 つの追加関数が存在することを想定しています。定義方法は次のとおりです。

function format_error($errno, $errstr, $errfile, $errline) {
    $trace = print_r(debug_backtrace(false), true);
    $content = "..."; // Format the error message as needed
    return $content;
}
function error_mail($content) {
    // Use Swift Mailer or other mail-sending library to send the error email
}

追加メモ

  • register_shutdown_function には PHP 5.2 以降が必要です。
  • $php_errormsg 定数は、最新のエラーに関する情報を提供します。
  • エラー タイプのリストについては、定義済み定数のドキュメントを参照してください (例: E_ERROR).
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3