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