はじめに
AWSでデプロイした際に本番環境のみ上記のエラーが出ました。また、ローカルでも同じエラーも出たことがありました。500 server errorと表示されるだけでエラーの原因が分からず手探り状態になりました。これを解消するためにlogsファイルを使用してエラーの原因を突き止める方法を投稿いたします。
条件
envファイルを作成・編集以外の対処になります
投稿者の環境
MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)
macOS Big Sur バージョン11.0.1
PHP 7.3.23
Laravel Framework 6.20.7
エラー画像
現役エンジニア曰く、始末書を書かされるぐらい致命的なエラーみたいです・・・
エラーの原因を探る方法
今回はlogファイルを使用しエラーの原因を突き止めます。
ターミナルを起動して下さい。本番環境のみ500 server errorが出る方はEC2を立ち上げて下さい。
ステップ1
問題のあるwebアプリケーションをディレクトリ先に移動して下さい。
cd /Applications/MAMP/htdocs/webアプリケーション名
ステップ2
logsファイルにディレクトリ先を変更。
cd storage/logs
ステップ3
catでファイルの閲覧を表示させます。laravel.logはlogsファイルの中にあるファイル名になります。
cat laravel.log
ステップ4
上記を実行するとlaravel.logのログの一覧表が大量に出てきます。#0から#60ぐらいまで出ると思いますが#0までスクロールして下さい。その上にエラー文が表示されていると思います。これを解決したら500server errorを解決できると思います。複数エラー出ている可能性もありますので一つずつ対処して下さい。投稿者はこの様なエラーが出ました。
補足 logとは
アプリケーションは、1つのリクエストを取っても様々な処理が行われており、機能を維持しつつ拡張していかなければいけません。そのためにアプリケーションの状態を記録として残しておくことがログの役割です。
処理の中で適切にロギングすることで、開発する上で重要な情報を得ることができます。身近なことでいうとデバッグです、「この入力の時にこの処理起こるのおかしいな?どんな値として渡されているんだろう?」などロギング処理を埋め込むことで処理途中のアプリケーションの状態の一部を確認することができます
最後に
如何でしょうか? envファイルを作成・編集する投稿が多いですがこの様な対処のQiitaはないと思いますので是非、参考にして下さい!
参考文献
Laravel自体で発生したエラーのログはどこにでていますか?
ログを表示!Laravelでlogを出力させる方法【初心者向け】