Laravelは、そのパワフルな機能と柔軟性で、世界中の開発者から愛されています。
しかし、その魅力を最大限に活かすためには、環境設定の基本を理解することが不可欠です。
この記事は、Laravelの環境設定の入門者向けガイドと言えます。
初心者でも簡単に理解し、適用できる基本的なステップをわかりやすく解説します。
まずは、次の二つについて理解しましょう。
- configディレクトリ
- .envファイル
それでは、上記に沿って解説していきます。
configディレクトリ
Laravelフレームワークのすべての設定ファイルは、configディレクトリに保存されています。

各オプションにはドキュメントが付いています。

これらの設定ファイルを使用すると、以下のような情報の設定値を設定することができます。
- データベース接続情報
- メールサーバー情報
- アプリケーションのタイムゾーン
- 暗号化キー
設定情報は、次のコマンドで確認可能です。
php artisan about

特定のセクションのみを確認する場合は、次のように指定します。
php artisan about --only=environment

また、特定の設定ファイルの値を詳細に調べるには、config:show Artisanコマンドを使用します。
php artisan config:show database
上記コマンドを実行した結果の一部です。

.envファイル
configディレクトリ以下に設定ファイルが保存されるということでした。
そして、それらのファイルを変更するのが基本です。
ただ、昨今はローカルマシン上で開発を行うことが多くなっています。
それには、Dockerが一役買っていることでしょう。
そのような場合でも、configディレクトリ以下のファイルを触ることはしたくありません。
じゃあ、ローカル環境独自の環境設定をどうすべきか?
Laravelは、そのことにも対応しています。
それは、「.env」ファイルです。
プロジェクトのルートディレクトリに、「.env.example」が設置されています。
それをコピーして、「.env」ファイルを作成可能です。
「.env」ファイルが存在する場合、configディレクトリ以下の情報よりも優先されます。
「.env」ファイルで設定されている値で上書きされるということです。
例えば、APP_NAMEはconfig/app.phpで次のようにデフォルトで設定されています。

「.env」ファイル自体が、存在しない場合「php artisan about」で確認すると次のように表示されます。

また、「.env」ファイルが存在していてもAPP_NAMEが項目として存在しない場合も上記のままです。
では、「.env」ファイルにAPP_NAMEを設定してみましょう。

この状態であれば、「php artisan about」で確認すると次のように表示されます。
(忠実に誤字まで反映してくれています!)

まずは、configディレクトリと「.env」ファイルの関係を確実に理解しましょう。
おそらく、これが理解できるだけでもトラブルはかなり減るのではないでしょうか。
ただし、公式ページでは次のような注意書きが記載されています。

要するに、「.env」ファイルよりも環境変数の方が優先されるということです。
例えば、次のように環境変数を設定します。
$ export APP_NAME=環境変数でLaravel設定
この状態で「php artisan about」を実行した結果は、以下。

「.env」のAPP_NAMEを設定したままの状態です。
それが上書きされていることを確認できます。
ただし、環境変数の取り扱いにはそれなりに知識が必要とされます。