概要
環境ごとに値が変わるものは.env
ファイルに定義するのが多いと思います。
その際、.env
ファイルに定義した値を取得する際にはconfig
以下のファイル経由での取得(config
関数)することと書かれてますが、
たまにenv
関数を使用してそのまま定義した値を取得する処理が書かれていることも多く見られるので、
それぞれの関数を使用して、config:cache
した後と前での.env
の定義した値の取得検証をしてみます。
Configuration - Laravel - The PHP Framework For Web Artisans
設定値と確認方法
検証に使用したLaravelのバージョンは5.8.26です。
(環境はHomestead(8.6.0)を使用しました。)
また、基本的に.env
以外はデフォルト値です。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=**********************
<?php
return [
// ~省略~
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services the application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
値の確認は以下のようにvar_dump
を使用
var_dump(config('app.env'));
var_dump(env('APP_ENV'));
exit;
config:cache
前
まずconfig:cache
する前の値を取得してみます
config:cache
する前は**config
関数で取得するとnull
が帰ってくるようです。**※
※2019/09/04 追記
検証時はnull
が返ってきたのですが、他環境(バージョンは異なる)ではデフォルト値(local
)が返ってきました。
おそらく本来の動きとしては、デフォルト値(local
)が返ってくるのが正の動きです。
以下は別環境かつ別バージョンで検証した際のtinker
での結果です。
なので、null
が返るのは検証した際の環境がおかしかったかもしれません。(コメント欄も併せてご覧ください)
config:cache
後
以下のコマンドを実行して再度、値の確認をしてみます。
php artisan config:cache
env
関数の方はnull
が返るようになりました。
そしてconfig:cache
後はconfig
関数の方は定義した値を取得できるようになりました。
config:cache
後にconfig:clear
config:cache
後に以下のコマンドを実行後、値の確認をしてみます
php artisan config:clear
両方の関数で.env
の定義した値を取得できました。
おまけ(.env
ファイルからAPP_ENV=local
行を削除)
.env
ファイルからAPP_ENV=local
を丸ごと削除した際に各関数を実行してみる。
APP_NAME=Laravel
APP_KEY=**********************
以下tinker(laravel用REPL)で実行した際の様子
>>> var_dump(config('app.env'));
string(10) "production"
=> null
>>> var_dump(env('APP_ENV'));
NULL
=> null
>>>
結果、config関数
はconfig\app.php
で設定されている値を取得しますが、env
関数はそのままnull
返すようです。
この結果なのでどちらにしてもconfig関数
使った方がよさそうですね。
おわり
-
config
関数で定義値取得するように書いてた場合、config:cache
し忘れてたら大変なことになりそう