Laravelで環境変数を扱う際の注意点を学んだので記事として残しておきます。
要は、タイトルの通り、.envに格納した内容はconfig経由で使いましょうという話です。
今回は、ポートフォリオでGoogleMapsAPIを使用する機会があったので、APIキーの扱い方を例とします。
.envにAPIキーを格納
project/.env
GOOGLE_MAP_API_KEY=https://maps.googleapis.com/maps/api/js?key=xxxxx
configを経由する
.envに保存した内容をまずconfig/services.phpで取得します。
env('.envファイルに記述したキー名')で取得する事ができます。
config/services.php
'google-map' => [
'apikey' => env('GOOGLE_MAP_API_KEY'),
],
なお、config/services.phpとは、外部のWebサービスのアカウント情報を設定しておく為に使うファイルだそうです。
その為、APIキーとかAWSのアクセスキーはconfig/services.phpを使って取得するようにしましょう。
BladeファイルでAPIキーを取得する
GoogleMapsAPIを使う時は、GoogleMapを使いたい画面のBladeファイルでAPIキーを記述する必要があります。config/services.phpを経由して.envのAPIキーを引き出すには以下のように記述します。
xxx.blade.php
<script src="{{ config('services.google-map.apikey') }}"></script>
これで、
xxx.blade.php
<script src="https://maps.googleapis.com/maps/api/js?key=xxxxx"></script>
が再現できます。
まとめ
BladeでAPIキーを使いたい。その為には.envに格納してenv('GOOGLE_MAP_API_KEY')とすれば良いんじゃね?とか思っていましたが、
こちらの記事によると、、
本番環境でconfig:cacheコマンドを実行した際、.envファイルを読み込まないから。
という理由で、直接env()を使用するのはNGだという事を学びました。
私も含めて初学者の方は基礎知識が甘い為、APIキーなどの取扱注意物に関する情報はしっかり調べた上で扱うようにしましょう!!
↧