こんにちは。
laravelでは、環境ごとに違う値をセットする必要がある設定項目は、ルートディレクトリにある.envファイルに行います。
この記事では、.envの特徴と使い方を紹介します。
laravelで環境設定ファイル.envの使い方
.envファイルの特徴
.envファイルへは、ローカル環境や、ステージング環境、本番環境で異なる値を設定する必要がある設定項目を記述します。
このファイルには以下の特徴があります。
- 使用するデータベース情報や、外部サーバーの機密情報を記述
どの環境でも共通して使う設定項目は、/configフォルダ内に行います。 - 環境設定、デバッグ設定も行なう
本番環境には、APP_ENV=production、テスト環境では APP_ENV=local というように.envの中でそのサーバーの用途を設定していれば、間違って本番環境で、デバッグ中のサーバーデータを公開してしまうことがなくなり、管理が確実にできます。 - バージョン管理ファイルには登録しない
環境ごとに異なるデータを設定すること、データベースのパスワードなど機密情報を設定することなどから、バージョン管理に入れません。
実際の.envの内容
下図が .env.sample からコピーして作成した.envファイルです。使わない機能の設定はそのままにしておけば問題ないです。
また、サーバーごとに変えたい設定が出てきたら、あとから追加することが出来ます。
.envに記述した設定を参照する方法
.envに記述した設定を参照するにはenv()関数を使います。
例えば、/configフォルダにはたくさん設定がありますが、その中には、.envの設定を参照しているものもあります。
例えば、/configフォルダの app.php にはアプリケーションの設定がいくつもあります。
そのうち、name は、.envファイルのAPP_NAME、envは、APP_ENV、debugはAPP_DEBUG を参照しています。
env()関数は、
1 |
env('.envの設定項目名', '.envに該当する項目名がない場合のデフォルト値') |
のように使います。
例えば、 'name' => env('APP_NAME', 'Laravel'), では、’name’というキーに、.envファイルの APP_NAME で定義された文字列を設定します。なければ、’Laravel’という文字列を設定します。
/config/app.php に設定された項目を参照するには、config()関数を使います。例えば、
まとめ
.envファイルは、環境ごとに異なる設定を記述するファイルでした。
環境ごとに共有されないこと、パスワードなど接続情報が記述されるため、バージョン管理ツールでは管理しないファイルになります。
参照するには、env()関数を使います。自分で機能を追加する際にも、.envファイルへの設定は使えますので、環境ごとに設定を変更したい値があったら、.envへの記載を検討してみてください。
僕が最近手掛けた案件では、テストサイトと本番サイトで違うアカウントを取得して外部サービスのAPIへアクセスするために、.env に設定を追加したりしました。
そんな.envへの設定を追加するような外部サービスとの連携のやり方を紹介する記事も今後書いていきます。内容によってはメルマガでの紹介になったりしますので、よかったら、下のフォームからメルマガにも登録してみてください。
メルマガ登録フォーム
コメント