5
2

More than 1 year has passed since last update.

【Laravel】環境変数の扱い方

Last updated at Posted at 2023-08-01

環境

Laravel v9.52.10 (PHP v8.2.6)

はじめに

環境変数を参照する時は、env()からではなく、config()経由で参照する。

環境変数の定義

laravelでは、.envというファイルに環境変数を定義していきます。

.envファイル自体はプロジェクトルート直下にあります。

APP_NAME=Laravel
APP_ENV=local
APP_KEY=********
APP_DEBUG=true
APP_URL=http://localhost

大体このような形式になっていると思います。

環境変数名は、上記のようなスネークケースで記述します。

環境変数を使用する

まずは、環境変数を自分で定義していきます。

TEST_NAME=miura

このように定義することで、この環境変数の値をプロジェクトの中で使用することができるようになります。

次に、先ほど定義した環境変数をプログラムで使用します。

$name = env('TEST_NAME');

環境変数を使用する時は、env()メソッドに環境変数名を引数に渡してあげれば値を取得することができます。

デフォルト値の設定

環境変数には、その値が存在しない場合などに使用するデフォルト値を設定することができます。

デフォルト値を設定するメリットは、誤って環境変数を削除してしまったり、削除した後に参照側を修正し忘れてしまった場合などに、デフォルト値を返すことでコードの不整合に気づきやすくなります。

$name = env('TEST_NAME', 'error');

このように、envメソッドの第一引数に環境変数名を、第二引数に環境変数が存在しない場合のデフォルト値を設定できます。

.envファイルは直接参照しない!

laravelでは、設定ファイルをキャッシュする機能があります。

$ php artisan config:cache

上記のコマンドでキャッシュが可能です。

しかし、Laravelの公式ドキュメントを見てみると、

開発過程の一環としてconfig:cacheコマンド実行を採用する場合は、必ずenv関数を設定ファイルの中だけで使用してください。設定ファイルがキャッシュされると、.envファイルはロードされません。したがって、env関数は外部システムレベルの環境変数のみを返すだけです。

ドキュメントに書いてある通り、設定ファイル(config内のファイル)がキャッシュされると、config外にある.envファイルはロードされなくなってしまい、env関数の呼び出し結果がnullになってしまいます。

なので、configフォルダ内にあるファイルでのみ、env()メソッドを使用するようにしましょう。

configで環境変数を定義する

configは、プロジェクトルート直下に存在します。

まずは、configディレクトリ下にファイルを作成し、環境変数を定義します。

config/user.php
<?php

return [
  'test_name' => env('TEST_NAME'),
];

次に、config()メソッドを使用して呼び出します。

$name = config('user.test_name');

このように、ファイル名.値のドット記法で呼び出すことができます。

しかし、これだけだと使用することはできないので、使用する前に値をキャッシュしておかないといけません。

$ php artisan config:cache

キャッシュした後に実行してみると、.envに設定した環境変数をconfig経由で取得することができます。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2