php artisan config:cacheを叩いてハマった


.envの設定が反映されなかったのでキャッシュを消そうとした際に、
php artisan config:cacheを叩いてエラーにハマりました。

本来叩きたかったコマンドは、

php artisan cache:clear

になります。これで全てのアプリケーションキャッシュが削除されます。

今回勘違いして叩いたのは

php artisan config:cache

configの読み込みを早くするためのキャッシュを作成するコマンドで
実行するとbootstrap/cache/config.php配下にconfig.phpが生成されます。
config.phpにはconfig配下の各ファイルから読み込まれたキャッシュが配列で作られます。

このコマンドを実行するとキャッシュを一度クリアにして、
再度キャッシュするという動作を行い、もう.envファイルを読み込まなくなるという罠があります。

ただ、config:cacheを使うことによって設定ファイルをまとめることができるのでアプリをスピードアップできるメリットがあります。そうなってもいいように.envファイルの値をそのまま使うのではなく
configファイルとenvファイルに分けて

// configファイル
`api_key` => env('API_KEY')
// envファイル
API_KEY=hogefugapiyo....

というように使うことを推奨されているようです。
こうすれば.envが読み込まれなくてもconfigファイルから情報が取れるんですね。

公式もこのように言っています↓

開発期間中にconfig:cacheコマンドを実行する場合は、設定ファイルの中で必ずenv関数だけを使用してください。設定ファイルがキャッシュされると、.envファイルはロードされなくなり、env関数の呼び出しはすべてnullを返します。
https://readouble.com/laravel/8.x/ja/helpers.html?header=env()

cache:clearとconfig:cacheの違いを明確に分かっていないとハマります。ご安全に!