私たちのソフトウェアのエントリ ポイント (フロント コントローラー) は、例外をキャッチする try catch ブロックにラップされ、わかりやすいエラー ページを表示するための PHP ファイルが含まれ、例外についてメールで通知されます。これは完全に機能しますが、HTTP 500 応答を表示するだけの PHP の致命的なエラーが見逃されます。例外と同じ方法でこれらのエラーをキャッチしようとしています。
現時点では、アプリケーションのエントリ ポイントにこれがあります。
try {
// Register a shutdown handler for fatal errors
register_shutdown_function(function() {
$error = error_get_last();
// Did this request throw an error that wasn't handled?
if ($error !== null) {
throw new Exception('PHP fatal error!');
}
});
// ...normal front controller stuff
} catch (Exception $e) {
// show fancy error screen with debug information
include 'themes/error/500.php';
}
ここでは、通常の例外処理手順で処理されることを期待して、PHP が致命的なエラーをスローしたときに例外をスローしています。ただし、例外はキャッチされません。
Fatal error: Uncaught exception 'Exception' with message 'PHP fatal error!'
ここでやりたいことをどのように達成できますか?