laravel

Laravel .envを変更しても反映されない時の対処

More than 1 year has passed since last update.

前提

・本番サーバー(1台)へのデプロイをこんな感じのシェルスクリプトで行っている。

#!/usr/bin/env bash

git fetch origin
git reset --hard origin/master
/usr/local/bin/composer update --no-interaction --no-dev
php artisan migrate --force
php artisan route:cache
php artisan config:cache

・.envはサーバー上で直接変更しているか自動デプロイとは別でアップしている。

・なんらかのデプロイツールを使い.envを毎回作成してる場合は今回の問題は起こらない。

問題

この状態でなにが起こるかというと.envを変更しても反映されない。
原因はphp artisan config:cacheでキャッシュしてるから。
例えばAPP_KEYを変更したとしてもbootstrap/cache/config.phpが優先されるので無効。

対処

.envを変更した後にphp artisan config:cacheで解決。

感想

最近はAWS Elastic Beanstalkばかりだったので気付かなかった…。
ebだと管理画面から環境変数で設定して念のためさらに.envを毎回作成してる。
環境変数変えると必ず再デプロイなのでそこでconfig:cacheもされて問題発生しなかった。
手元からgit push→GitLab→CIでテスト→eb deployは本当に楽。

一度だけLaravelプロジェクトを共有サーバーにFTPでアップという原始時代みたいなこともやっただけど今更これはもう無理…。