.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引数はデフォルト値
'key_name' => env('API_KEY'), //例
コントローラーなどで.envの内容を使用する場合
コントローラーやモデルからは config()
をつかう
config('test.key_name'); //例
分解すると
test
の部分: config/〜.phpの、phpのファイル名(例ではtest.php)
key_name
の部分: config/〜.phpでファイル内で設定したキー名
まとめ
laravelでは.envファイルの内容を取得するにはconfigディレクトリ内で env()
を使用し、 コントローラーやモデルでは基本的に env()
を使わないようにする。
コントローラーやモデルでは基本的にconfigディレクトリ内で設定したキーを config()
を使用し取得する。
.envファイル変更時やconfig/〜.phpファイルを変更時は php artisan config:cache
を実行し、変更内容を読み込ませる。
奥がふかい