この記事ではPHPでFatalエラーをキャッチする方法を中心に紹介していますので、困っている方は参考にしてください。
通常、致命的なエラーは捕捉する必要はありませんが、複雑なプログラムでは、偶然メモリ不足により致命的なエラーが発生した場合、対処が困難になります。
たとえば、MySQL クラスでのフェッチ時に致命的なエラーが発生します。現時点では、実際の問題を特定するのは困難です。
PHP 例外処理は set_error_handler を通じてキャプチャできますが、キャプチャできるのは NOTICE/WARNING レベルのエラーのみであり、E_ERROR については何もできません。
register_shutdown_function は set_error_handler の欠点を解決できます。
この関数を通じてプログラム終了コールバック関数を登録することで、通常では捕捉できないエラーを捕捉することができ、error_get_last を使用してエラーを判断することができます。
コードは次のとおりです:
function shutdown_function() { $e = error_get_last(); print_r($e); } register_shutdown_function('shutdown_function');