PCS開発チーム

PCS開発チーム

「500エラー(Internal Server Error)」には何の情報も含まれてない

質問に「こんな500エラーが出てる」と書いても全く意味がない。
誰にも原因は分からない。

401なら認証、403なら認可など原因を予想できる番号もあるけど500からは何も分からない。
サーバーでなんらかのエラーが発生した以外の情報はない。
「最終的にどのエラーにも当てはまらない時」もしくは「エラーの詳細を隠したい時」などに使われるのが500。

500エラーの詳細の確認方法はLaravelならstorage/logs/内のログファイルを調べる。

覚え方

「500エラーには何の情報も含まれてないから書いても意味がない」という知識は結局本番環境での運用経験がないと身に付かない。

こんなルーティングの場合

Route::get('/', function () {
    throw new RuntimeException('test');
});

APP_DEBUG=trueの開発環境ではブラウザ上でも「RuntimeExceptionの例外が発生した」という詳細が分かる。

APP_DEBUG=falseの本番環境ではブラウザには「500 | Server Error」しか表示されず詳細が分からない。
ログではRuntimeExceptionなことが分かるのでログを調べるしかない。

local.ERROR: test {"exception":"[object] (RuntimeException(code: 0): test at

一度経験すれば覚えられること。