Laravel5.5でたまに.envが読み込めなくなる問題。

エラー

file_get_contents(読み込み対象ファイル名): failed to open stream: No such file or directory (View: viewファイル名) (View: viewファイル名)
 

翻訳

ストリームを開くことに失敗しました:そのようなファイルまたはディレクトリがありません
 

概要

通常は読み込みに成功しているのに、たまに失敗することがある。
 

原因分析

$xml = file_get_contents(env("APP_PATH")."/seo.xml");

呼び出し部分のenv("APP_PATH")の部分でパスが呼び出せてないのが根っこの原因。
パスが間違ってるのでファイルが見つからないのが最終的な結果につながる要因。
.envをキャッシュしているようだがローカルで頻繁にenvが読み込めなくなるのは謎。
根本的な解決方法は分からないが下記でとりあえず対処療法。
 

解決法

このコマンドでキャッシュ作成かキャッシュを消去してやるとまた読み込めるようになる。

php artisan config:cache
rm -f bootstrap/cache/config.php

 

追記

Laravel では env() を config 系ファイル以外の場所に書いてはいけない
https://qiita.com/mpyw/items/34f37742d9a18b80a08c

.env ファイルの読み込みは, php artisan config:cache していない場合にしか行われません! キャッシュを有効にしてある場合, .env に書いてあるだけでシェルから起動する時点で定義されていない環境変数はすべて未定義になってしまうので注意しましょう。
 

結論

.envの読み込みをconfig以外で使うな
定数を使いたければconfigから取得しろ

管理ユーザー / 2018-09-14 / 100 / 0
このエントリーをはてなブックマークに追加

まだコメントがついていません。

ログイン不要でコメントの投稿ができます。