【エラー備忘録】config関数を使って値を取得する / $ php artisan config cache
状況
Laravelのコントローラー内で、config関数を使い以下のコードを書いた。
public function index()
{
$sample_msg = config('sample.message');
$sample_data = config('sample.data');
$data = [
'msg' => $sample_msg,
'data'=> $sample_data
];
return view('hello.index', $data);
}
このデータをビューで呼び出す。
<p>{!!$msg!!}</p>
<ul>
@foreach($data as $item)
<li>{!!$item!!}</li>
@endforeach
</ul>
ここでブラウザにエラーが出た。
エラー文
Invalid argument supplied for foreach()
(View: /Users/hinako/laravel_app/resources/views/hello/index.blade.php)
意味は、foreach文に渡された引数が間違っているもしくはNULLになっているという意味らしい。
原因
使用している変数をddやLog::debugでデバッグしてみた。
Log::debugでは値が変数に入っていると確認できたが、ddでブラウザに表示するとNULLになっていた。
解決策
変数に入っている値は問題なかったので、以下のコマンドを実行してみる。
$ php artisan config:cache
これでエラーは解消された。
しかし調べていると、このコマンドは安易に使用すると危ないらしい…。
理由は、config:cacheしてしまうと、env()はnullを返すようになる
から。
つまり、設定ファイル(configディレクトリ以下のファイル)以外でenv()を直接使っている箇所がある場合、 .envが読み込まれないようになっているので、nullが返ってくるようになる。
この場合は、
・configに.envの加えたい値を追加する
・env()ではなく、config()を利用して値を取得する
のように対処する必要がある。
参考サイト
https://readouble.com/laravel/6.x/ja/configuration.html#configuration-caching
Author And Source
この問題について(【エラー備忘録】config関数を使って値を取得する / $ php artisan config cache), 我々は、より多くの情報をここで見つけました https://qiita.com/hinako_n/items/7c531212f5ad4cdc913f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .