前提
環境;Laravel5.5
この記事は以下の人に読んでいただきたいです。
- env関数でnullが返ってきて困る
- ソースを触らなくても返す値が異なる挙動について知りたい
- Laravelのenv関数、config関数の使い方を知りたい
エラー内容
.envにAPP_NAMEを定義していたところ、
env('APP_NAME');上記でnullが返ってくるようになってしまった。
原因
設定ファイルをキャッシュすると、env関数はnullを返してしまう。
php artisan config:cache開発期間中にconfig:cacheコマンドを実行する場合は、設定ファイルの中で必ずenv関数だけを使用してください。設定ファイルがキャッシュされると、.envファイルはロードされなくなり、env関数の呼び出しは全てnullを返します。
// 前提として
// .envにAPP_NAME=PHPを設定している場合
// 設定ファイルがキャッシュされていない場合
env('APP_NAME'); // PHP
env('APP_NAME', '題名'); // PHP
// 設定ファイルがキャッシュされている場合
env('APP_NAME'); // null
env('APP_NAME', '題名'); // 第2引数の題名対策
対策としては、configファイルでenv関数を使えば解決です。
return [
'name' => env('APP_NAME', '題名'),
'env' => env('APP_ENV', 'production'),
'debug' => env('APP_DEBUG', false),
// ...//アクセス方法
config(app.name)一般的にはキャッシュされている場合が多いかと思います。
ただし、このように設定ファイルをキャッシュするとnullが返ってエラーが発生するパターンもあるので、コード上ではconfig関数を利用したほうが無難です。


コメント