自分自身の備忘録として、LaravelプロジェクトをHerokuにデプロイした際の
500エラーの解消方法を残しておきます。
結論としては、APP_KEYが設定されていなかったことが原因です。
その他にも様々な原因があるかとは思いますが、解決策の一手段として確認してみてください。
■開発環境
OS:windows10
Laravel 8.83.14
Vue.js 2.6.12
■エラーの原因
Laravel Projectをcomposer create-projectコマンドで作成していたのに、
「heroku config:set APP_KEY=$(php artisan --no-ansi key:generate --show)」で
別の新規APP_KEYを作成しようとし、APP_KEYに値が登録されない状況が発生。
その結果、Heroku上でLaravelが動かない状況が発生し、500エラー。
composer create-projectコマンドでLaravelプロジェクトを作成すると、
その段階で自動的にAPP_KEYが作成される。
■解決策
①コマンドプロンプトでheroku configで設定状況を確認する
$ heroku config
②APP_KEYが設定されている場合
APP_KEY:の続きに値が入っていると設定されている(下記の場合だと123456789)ため、
入力されているAPP_KEYが正しいかどうかを④の方法で確認する。
$heroku config
=== herokuアプリ名 Config Vars
APP_ENV: heroku
APP_KEY: 123456789
以下省略
③APP_KEYが設定されていない場合
APP_KEY:の後ろに何も値が表示されていない。この場合はAPP_KEYが入っていない。
$heroku config
=== herokuアプリ名 Config Vars
APP_ENV: heroku
APP_KEY:
以下省略
④APP_KEYを確認する
Laravelプロジェクト直下(package.jsonとかがあるディレクトリ)の.envファイルを開き、
上から3行目のAPP_KEYの=より右側を確認
APP_NAME=Laravel
APP_ENV=local
APP_KEY=123456789
APP_DEBUG=true
APP_URL=http://sample.test
以下省略
⑤Heroku configにAPP_KEYをセットする
$heroku config:set APP_KEY=123456789
⑥Heroku configをもう一度確認する
これで、APP_KEYに.envのAPP_KEYと同じ値が入っていればOK。
$heroku config
⑦500エラーが解消されているか確認する
heroku openでwebページを開きなおし、500エラーが解消されているかどうかを確認
$heroku open
■まとめ
500エラーには様々な原因があるので、解決が難しいと思います。
今回の場合は、作成したwebアプリ上で、500エラー専用ページを作っていました。
そのため、専用エラーページが表示されず、Laravelデフォルトの500エラーページに
飛ばされた段階で、そもそも作成したアプリケーションが読み込まれていないことに気が付きました。