「500エラー(Internal Server Error)」には何の情報も含まれてない ==== 質問に「こんな500エラーが出てる」と書いても全く意味がない。 誰にも原因は分からない。 401なら認証、403なら認可など原因を予想できる番号もあるけど500からは何も分からない。 **サーバーでなんらかのエラーが発生した**以外の情報はない。 「最終的にどのエラーにも当てはまらない時」もしくは「エラーの詳細を隠したい時」などに使われるのが500。 500エラーの詳細の確認方法はLaravelなら`storage/logs/`内のログファイルを調べる。 ### 覚え方 「500エラーには何の情報も含まれてないから書いても意味がない」という知識は結局本番環境での運用経験がないと身に付かない。 こんなルーティングの場合 ```php 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 ``` 一度経験すれば覚えられること。