Laravel .envとconfigの役割の違い【初心者のLaravel講座】

Laravel 入門講座

Laravelでは、アプリ本体は、configファイルを経由して、.envファイルの情報を読み込みます。

なぜこんな流れにするかというと、.envファイルの設定情報を直接読み込むのは危険だからです。

コンフィギュレーションキャッシュというコマンドを使うと、.envファイルを読み込めなくなってしまうのです。

と言われても、どういうことか分かりにくいですよね。

じゅんこ
じゅんこ

わたしも最初、??状態でした。

.envファイルとconfigファイルの役割と、なぜこの流れが必要なのか、分かりやすく解説していきます。

.envファイルとconfigファイルの役割

まずはそれぞれのファイルの役割と関係を解説します。

.envファイルとは

まずは.envファイルについて説明します。ます。

.envファイルは環境設定ファイルとも呼ばれます。

.envは、英単語environmentを省略したもの。

environmentは環境と言う意味です。

このファイルにはデータベースの名前、APIキー、メール送信のための情報などを追加します。

登録された情報は、環境によって変える可能性があります。

たとえば開発環境でのデータベースと、本番環境でのデータベースは変更しますよね。

configファイルとは

次にconfigファイルについて。

configは、英単語のconfigurationの略。

configurationは構造、設定といった意味です。

configの内容は、環境が変わっても変わりません。

ファイルは、configフォルダの中に入っています。

.envファイルとconfigファイルの関係

この2つのファイルの関係は、次のとおりです。

アプリはconfigファイルの設定情報を読み込みます。

configファイルの情報の中には、envファイルから読み込んでいるものがあります。

たとえば config/database.phpファイルを見てみましょう。

18行目あたりに、上記のように書かれています。

【config/database.php】

これは、envファイルのDB _CONNECTIONの情報を読み込むという意味です。

デフォルト項目は、このような形で、envファイルから読み込むよう設定されています。

.envファイルに新しく項目を設定した場合には、configファイルには設定がありません。

そのため、手動で入力してあげる必要があります。

.envファイルとconfigファイルの入力例

ではどのように実際に値を入力していくのか。

StripeのAPIをLaravelの中に設定するときを例にとって説明します。

StripeはPaypalのような決済用プラットフォームです。

.envファイルには、次のようにStripeのAPIを設定します。

【.envファイル】

config用ファイルには、次のように .envファイルの内容を読み込みます。

【config/services.php】

アプリの中では、configファイルを経由して、このAPI情報を取得します。

たとえば次のように記述します。

【bladeファイル】

 

 

config/servicesフォルダの中のstipeの項目のpb_keyを読み込む、という意味になります。

なぜconfigファイルを経由するのか

.envファイルから直接情報を読み込んだほうが早そうですが、なぜconfigファイルを経由せねばならないのか。

それは、下記のconfiguration キャッシュコマンドを使うと、.envファイルを読み込めなくなるからです。

そうなってもconfig経由で情報を読み込んでおけば、エラーにならずにすみます。

それなら、キャッシュしなきゃよいのでは?

と思いますよね。

ただ、必須ではないものの、このコマンドは本番環境に移行する前に実行することが多いです。

これによって設定ファイルをまとめられ、アプリをスピードアップさせられるためです。

なので「キャッシュコマンドを実行する」という想定で、configファイルに.envファイルの設定を読み込ませておいたほうが無難です。

 

じゅんこ
じゅんこ

ちなみにLaravelの公式マニュアルには、次のように結構サラリと、この危険性が書かれています。

Note: 開発期間中にconfig:cacheコマンドを実行する場合は、設定ファイルの中で必ずenv関数だけを使用してください。設定ファイルがキャッシュされると、.envファイルはロードされなくなり、env関数の呼び出しはすべてnullを返します。

引用元:Laravel8.x ヘルパ [env()]

さいごに

以上、Laravelの設定ファイルの役割と関係を解説しました。

.envファイルに新規情報を加えたら、configファイルを通じて読み込むようにしておきましょう。

Laravel入門講座では、Laravelの基礎知識について解説しています。

じゅんこ
じゅんこ

もし分かりにくいことがあれば、他の記事も読んでみてくださいね。

Laravel 入門講座

【Laravelの教科書・無料プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック
Twitter始めました。
40代からプログラミング!

コメント

タイトルとURLをコピーしました