はじめに
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
参考