環境ごとに.envファイルを切り替える
はじめに
laravelで環境ごとに.envファイルを切り替えるというところで、結構詰まったので、メモとして残しておく。
特に、最後の注意の部分はぜひ読んで欲しいです。
bootstrap/app.php編集
bootstrap/app.php
+ $app->loadEnvironmentFrom('.env.' . ((getenv("ENV") ? getenv("ENV") : "local"))); #<= 追記
.env ファイルのコピーを作成
$ cp .env .env.local
$ cp .env .env.stg
作成したファイルの中身を変更
env.local
APP_NAME=Laravel-local
env.stg
APP_NAME=Laravel-stg
ルーティングを設定
+ $app->loadEnvironmentFrom('.env.' . ((getenv("ENV") ? getenv("ENV") : "local"))); #<= 追記
$ cp .env .env.local
$ cp .env .env.stg
作成したファイルの中身を変更
env.local
APP_NAME=Laravel-local
env.stg
APP_NAME=Laravel-stg
ルーティングを設定
APP_NAME=Laravel-local
APP_NAME=Laravel-stg
ルートパスでAPP_NAMEが表示されるようにする。
Route::get('/', function () {
return env('APP_NAME');
});
検証
$ export ENV=stg
$ php artisan serve
Laravel development server started: http://127.0.0.1:8000
$ export ENV=stg
$ php artisan serve
Laravel development server started: http://127.0.0.1:8000
localhost:8000にアクセスして、laravel-stgが表示されれば成功です。
環境を変えたいときは、
$ export ENV=local
とするだけ。
これで完了です!
注意
もし、上記を行っても、表示されない。真っ白な画面が表示されるだけという状態であれば、以下のコマンドを実行。
$ php artisan config:clear
Configuration cache cleared!
.envファイルに環境変数が設定されているにも関わらず、env関数がnullを返す場合があります。それは、設定ファイルがキャッシュされている場合です。「設定ファイルがキャッシュされると、.envファイルはロードされなくなり、env関数の呼び出しは全てnullを返す」仕様らしい。
詳しくは以下の記事
Laravelのenv関数で値が取得できない原因と対策
https://qiita.com/yamaji_daisuke/items/746e1e5ec3487fc88c3e
おわりに
駆け出しエンジニアからすると、環境設定系の記述や編集は、理解が難しく、避けがちですが、少しずつわかってくると楽しいもんですね。
参考記事
[Laravel 5.5] 読み込む.envファイルを環境ごとに切り替える
https://qiita.com/takaday/items/b992c7d8cd69343b6626
Laravelでenvやgetenvで環境変数が読めない現象について
https://qiita.com/hiroykam/items/5f1a44cf94173476a12e
Author And Source
この問題について(環境ごとに.envファイルを切り替える), 我々は、より多くの情報をここで見つけました https://qiita.com/soma_sekimoto/items/657937968d46ae92961a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .