はじめに
dotenv
は環境変数を読み込むために用いられるライブラリです。例えばPHPだとphpdotenvが有名です。
今回はDrupal
でdotenv
を使用する方法についてまとめます。
なぜdotenvを使うのか
なぜdotenvを使うのかというと
- 環境変数のハードコーディングを避けるため
- セキュリティの観点でよろしくない
- 環境の切り替え(例えば開発環境から本番環境)の際に環境変数の設定を楽にする
といった理由が挙げられます。
早速準備してみる
今回はDrupalで提供されているdotenv
を使用します。
環境
最新版の1.2.x
を使用する場合、以下の環境を用意しておく必要があります。
- PHP8.0以上
- Drupal10
インストール
-
drupal/dotenv
をcomposerを使ってinstallします。
composer require 'drupal/dotenv:^1.2'
drupal/dotenv
ではsymfonyのdotenvをインストールする必要があるので、こちらもインストールします。
composer require symfony/dotenv
ここで注意していただきたいのがsymfony/dotenv
の最新版v7.1.3
(2024/08/11時点)ではdrupal/dotenv
に対応していないためv6.4
をインストールするようにしてください。
作成したDrupalプロジェクトのルートにload.environment.php
を追加し、以下のように記述します。
<?php
use Symfony\Component\Dotenv\Dotenv;
(new Dotenv())->usePutenv()->bootEnv(DRUPAL_ROOT . '/../.env', 'dev', ['test'], true);
こちらのファイルでは先ほどインストールしたsymfony/dotenv
を用いて環境変数の読み込みを行います。.env
がない場合は.env.dist
が読み込まれます。
続いてcomposer.json
に以下の内容を追記し、load.environment.php
をautoloadします。
"autoload": {
"files": ["load.environment.php"]
}
最後に以下のコマンドを実行します。
composer update --lock
composer dump-autoload
使用方法
任意のphpファイルで$ENV['HOGE']
で環境変数を読み込むことができます。
例)
APP_ENV=dev
<?php
echo $_ENV['APP_ENV']; //dev
また.env
にスペース(余白)を入れないように注意してください。
//OK
APP_ENV=dev
//NG
APP_ENV = dev
参考