【Laravel】.envファイルの値の正しい取得方法【env関数を使うのは間違い】

記事内に商品プロモーションを含む場合があります

Laravel で本番環境と開発環境を使い分けたいときに、.envの値を取得する場合があると思います。

私の場合は本番環境のみGoogle Analyticsのコードを仕込みたかったので、if文で本番環境か開発環境かどうかを判定する必要がありました。

 

イメージはこんな感じです。

<head>
〜略〜
@if(本番環境ならば)
<script>Google Analyticsのスクリプト</script>
@endif
</head>
〜略〜

※bladeファイルです

 

【問題発生】Webアプリをデプロイしたが、アナリティクスが機能していない。。

MusicStore Reviewsという楽器店のレビューサイトを公開した際、Google Analyticsのコードを仕込んだのですが、アクセス数が数日連続で0だったため、これはオカシイと思い今回の問題が発覚しました。

ちなみに以下のサイトです。

欧美亚洲天堂网 ,国产精品一区二区不卡顿 ,一本视频在线 ,亚洲国产精品久久久久婷婷软件
芒果av,欧美亚洲天堂网 ,国产精品一区二区不卡顿 ,一本视频在线 ,亚洲国产精品久久久久婷婷软件 ,无码H肉3D樱花动漫在线观看 ,手机成人在线视频 ,国产乱人伦偷精品视频A人人澡 ,国产亚洲精品A第一页 ,欧美午夜理伦三级在线观看 ,五月激情久久 ,香蕉视频毛片 ,九九热免费精品视频 ,国产...

 

.envファイルの値の取得方法

結論から言うと正しい.envファイルの値の取得方法は以下です。

 

config('app.env')
※config/app.phpの'env'の値を取得する場合

 

.envファイルに直接アクセスする env('APP_ENV') という書き方は良くないです。

理由は、設定ファイルがキャッシュされている場合、env関数がnullを返すためです(envファイルを読み込まなくなる)。

本番環境ではキャッシュを保存するため、env(変数名)を使ってしまうとnullとなりエラーの原因となります。

※今回Google Analyticsのコードが読み込まれなかったのはif文の条件式で env('APP_ENV') を使用しており値がnullとなっていたためだった。。

 

configディレクトリ以下のファイル(この場合config/app.php)に、

'env' => env('APP_ENV', 'production')

のような書き方をして、その他の場所(bladeファイルやコントローラーなど)では

config('app.env')

のようにconfig('ファイル名.変数名')でアクセスしましょう。

 

本番環境のみ適用させたい場合は、

<head>
〜略〜
@if(config('app.env') === 'production')
<script>Google Analyticsのスクリプト</script>
@endif
</head>
〜略〜

このように書きます。

 

技術メモ
スポンサーリンク
スポンサーリンク
のすけをフォローする
やばブロ!

コメント