LoginSignup
6
18

More than 3 years have passed since last update.

環境ごとに.envファイルを切り替える

Posted at

はじめに

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_NAMEが表示されるようにする。

routes/web.php

Route::get('/', function () {
    return env('APP_NAME');
});

検証

$ 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

6
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
18