Edited at

laravelでenv()を使用するときの注意点

.envに追記した内容を取得するとき、laravelでは env() でとれるけど

config:cacheコマンドを実行するとnullになるとのこと…

理由としては.envファイルの内容はcacheに保存されているからのようです。


php artisan config:cacheとは

configディレクトリにあるファイルすべてを合わせて1つのキャッシュファイルにして、設定データのローディング時間を速める

.envファイルを変更した時やconfig/〜.phpファイルを変更した時は php artisan config:cache の実行をして変更内容を読み込ませる。


.envファイルの書き方

API_KEY=情報を書く

.envでコメントを書くとき: # 以降コメントアウトになる

半角スペースを入れたいとき: "" (ダブルクオート)で囲む

環境変数の中にシャープを入れたいとき: "" (ダブルクオート)で囲む


config/〜.phpでenv()を使用する

configディレクトリはアプリケーションの設定ファイルがまとめてあるディレクトリ。

ここに新しくファイルを作るなどをして.envの内容を env() で取得する。

第1引数は.envファイルでのキー名、第2引数はデフォルト値


config/test.php

'key_name' => env('API_KEY'),  //例



コントローラーなどで.envの内容を使用する場合

コントローラーやモデルからは config() をつかう

config('test.key_name');  //例

分解すると

test の部分: config/〜.phpの、phpのファイル名(例ではtest.php)

key_name の部分: config/〜.phpでファイル内で設定したキー名

# Configuration Caching


まとめ :bread:

laravelでは.envファイルの内容を取得するにはconfigディレクトリ内で env() を使用し、 コントローラーやモデルでは基本的に env() を使わないようにする。

コントローラーやモデルでは基本的にconfigディレクトリ内で設定したキーを config() を使用し取得する。

.envファイル変更時やconfig/〜.phpファイルを変更時は php artisan config:cache を実行し、変更内容を読み込ませる。

奥がふかい