Laravelの.envファイルについて、覚えておいた方が良い基本的なことや
envヘルパーを使用した値の取り方などを書いています。
Laravelの.envファイルとは?
Laravelの.env
ファイルは環境ごとに異なる設定をするためのファイルです。
ローカルと本番で設定値を変えたい場合などに.env
ファイルに記載しておくと、Laravel内のプログラムの中で好きなときに呼び出すことが可能です。
呼び出すときにはenvヘルパーを使用して呼び出します。
Laravelでphpdotenvが採用されているため、この形式で環境ごとの設定を持っておくことになっています。
ファイルの初期について
Laravelを立ち上げると、.env
と.env.example
という2つのファイルがあると思います。
.env.example
はファイル名の通り、設定の例となりGithubなどで管理するためのファイルになります。
本番環境で使用するような「重要な値」は記載せずに、値なしでとりあえずキーだけ書いといてGithubなどでソース管理することが多いです。
.env
ファイルは実際にLaravelから読み込まれるファイルになります。
こちらに環境によって必要な値を設定します。
GithubからLaravelのソースを落としてきた場合は.env.example
しかないので、.env
というファイル名に変えて値を設定して、Laravelを動かします。
.env
ファイルは、通常.gitignore
ファイルで弾かれているためGithubに上がらないようになっています。
ファイルの中身
実際に.envファイルを確認すると、下記のようになっています。
左が値を取ってくるときのキーで、右が設定する値です。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_LEVEL=debug
// ---- 省略 ----
.envファイルがない?気をつけること
.envファイルのような「.」
ドットがついているファイルは隠しファイルと言って、LinuxやMac上では通常は非表示になっています。
表示するようにすることも可能です。
Macでは、Finder上で「shift + command + .(ドット)」
同時押しで確認できます。
envヘルパーの使い方
envヘルパーの呼び出し方ですが、下記のように引数にキーを渡すと、値が返ってきます。
echo env("APP_NAME"); // Laravelが表示される
デフォルト(上記の例)だと、”Laravel”が表示されます。簡単ですね。
envヘルパーには第2引数を渡すこともできます。
第2引数に値が渡された場合、キーが定義されていない場合のデフォルト値となります。
たとえば、下記のようにAPP_NAME_HOGE
という、.env
ファイルに定義されていないキーで呼び出された場合です。
echo env("APP_NAME_HOGE", "DefaultHoge");
キーがないので、第2引数の”DefaultHoge”が返ってきます。
configファイルにenvヘルパーが使用されている?
config/app.php
をデフォルトの状態で開くと、下記のようにconfigファイルで、envヘルパーが使用されている箇所があります。
return [
'name' => env('APP_NAME', 'Laravel'),
];
この場合も、通常通りenvヘルパーを呼び出した時と同じ挙動になります。
つまり、config("app.name")
とconfigヘルパーから上記の”name”項目を参照した場合ですが
.env
ファイルのAPP_NAME
の値が返されます。
.env
ファイルにキーが定義されてない場合はLaravel
が返ってきます。
configを使用するメリットですが、configに書かれた内容はキャッシュを作成することで高速に動作するようです。
(実際に速度計測などは試してみていませんが、公式のこちらに書いてありました)
注意点としてphp artisan config:cache
を使用して、 キャッシュを作成するとenv
ヘルパーの呼び出しが効かなくなります。
.env
のキーが定義されていない状態と同じように、nullを返すようになってしまいますので注意が必要です。
なので、キャッシュを使用して高速化する場合は、”APP_NAME”と同じようにconfig
に定義しておく必要がありますね。
コメント