config:cacheする際に、気を付けないと事故るかもしれない話

2020年3月26日木曜日

artisan Laravel

t f B! P L

.envを以下のように管理しているとする。

 .env.develop     // 開発
 .env.staging     // 検証
 .env.production  // 本番

.htaccessにSetEnvIfで各環境で読み込む.envを制御している。

SetEnvIf Host "xxx.net" APP_ENV=production
SetEnvIf Host "xxx-stg.net" APP_ENV=staging
SetEnvIf Host "xxx-dev.net" APP_ENV=develop

開発環境の.envには何も定義されていない。
この状態の開発環境で下記を実行した。

$ php artisan config:cache

あれ・・・急に開発環境つながらないんだけど・・・と。
(開発者が共有して使っているので、迷惑をかけてしまいました・・・)
理由は単純で、.envのDB接続情報をもとにconfigをキャッシュしてしまったことが原因でした。
つまり、.envは以下のような状態なので、これをキャッシュしていた訳です。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

ちなみに、artisanコマンドでは、.env.developを指定して実行することも可能です。

$ php artisan -env=develop config:cache

こうすれば、できますね。
余談ですが、
config:cacheするとenv()は、nullを返すので気を付けましょう。

注目の投稿

composer.lockはGit管理すべき話

# 背景 # 結論 # composer installとcomposer updateの違い # 背景 仕事では主にLaravelを使用して開発を行っている。 ソースコードはGitでバージョン管理を行い、compose...

プロフィール

7年ほど中小企業でSIerとして働いていました。 現在は個人事業主としてPHP, Javascriptの企業案件をメインに受けています。 最近はポケモンカードの開封にはまっています。

アーカイブ

このブログを検索

QooQ