【Laravel】 configとenvで環境を設定して値を取得する
Laravelは様々な設定を行うことができますが、一般的にはconfig関連のファイルと.env
ファイルの2つを使用して設定を行います。
設定の参照
Laravelの各種設定は、config
ディレクトリ内に入っています。

これらのconfigファイルはLaravelが実際に読み込むファイルですが、その中身では多数のenv
関数が呼ばれています。
このenv
関数で取得しているのは、.env
ファイルに書かれている変数です。

.env
は、OSの環境変数 ($_ENV
で取れるもの) とは別物です。あくまでLaravel用の環境変数です。
envの扱い方
各configは、それぞれを実装する際に設定の仕方を知ればよいだけですが、.env
をどのように扱えばよいのでしょうか。
.env
は、基本的に環境ごとに作成されます。
app ├ config/ │ └ ... ├ .env ├ .env.develop ├ .env.local └ .env.production
.env
は、通常はgitの管理対象に含めません。.env.local
などの各環境ごとの.env
をgitに含め、デプロイの処理の中でdevelopやproductionなどの環境ごとに適切なファイルを選択して.env
にリネームします。ローカルは手動で.env.local
をリネームすることもあります。
値の呼び出し
設定した値は呼び出すためにあります。.env
とconfigのそれぞれの参照方法を見ていきましょう。
設定を変更後にそれを反映させるには、必ずphp artisan config:clear
やoptimize
等して、configのキャッシュをクリアする必要があります。
env関数
Laravelではしばしばenv
関数を利用しています。env
関数は.env
から値を取り出すためのものです。
env
関数の第1引数には.env
にあるキー名を、第2引数にはそこになかった場合のデフォルトの値を書きます。
return [ 'name' => env('APP_NAME', 'Laravel'), // ... ]
普通のロジック内でも呼べますが、多くは設定ファイルを経由するはずです。
configを参照
各configから値を取得するには、config
関数を用います。
config
関数では、第1引数に対象となるキーを書きますが、ファイル名.設定
のようにして取得します。第2引数には設定がなかった場合のデフォルト値を設定できます。
// app.php の name を参照 $name = config('app.name'); // デフォルト値付き $name = config('app.abc', 'hogehoge');
階層構造になっている場合、app.hoge.fuga
のようにドット区切りで指定します。また、階層の途中までなら配列で取得できます。
また、設定ファイルは自由に追加することができます。
return [ 'hoge' => [ 'fuga' => 100, 'hige' => 'abc', ], ];
Log::debug(config('sample.hoge')); Log::debug(config('sample.fuga'));
[2022-03-24 14:04:44] local.DEBUG: array ( 'fuga' => 100, 'hige' => 'abc', ) [2022-03-24 14:04:44] local.DEBUG: 100
これらのenv
やconfig
といったヘルパはほぼどこからでも呼べるため、bladeから呼ぶなども可能です。
<p>{{ config('app.name') }}</p>
configを一時的に更新
もしconfigを一時的に更新したい場合もconfig
関数を使用します。
config(['app.name' => 'MyApp']); Log::debug(config('app.name')); // local.DEBUG: MyApp
これによる設定変更はその実行限りで、次にページにアクセスするなどの際は元に戻っています。
まとめ
Laravelではenvとconfigの2つを使用して設定を参照しています。.env
は環境ごとにファイルを分け、それぞれの環境ごとに固有の設定を書き込みます。.env
を使用して、デプロイしてうまく設定を切り分けられるようにしましょう。
