環境ごとに違うIDやパスワード、データベース名などの設定を管理するのに用いる環境変数(.env)。
PHPの場合は、phpdotenvを使うと環境変数を楽に扱うことができるので、その手順をまとめました。
目次
phpdotenvのインストール
開発中のプログラムにComposerを使ってphpdotenvをインストールします。
$ composer require vlucas/phpdotenv
もしくはcomposer.json
に直接下記のように記述してcomposer install
を実行してもOKです。
{
"require": {
"vlucas/phpdotenv": "^5.4"
}
}
環境変数 .env の記述方法
環境変数を管理するファイル.env
を、下記ディレクトリ構成にて作成します。
project
L index.php
L .env
L vendor(※composerによってインストールされたもの)
L autoload.php
L vlucas 他
.env
では下記の例のように、キー=値
で記述してください。
TEST_PASS=password
TEST_DATA=testdata
環境変数をPHPで取得する
下記コードのようにindex.php
内において環境変数を扱うことが出来ます。
.env
とindex.php
が同じ階層にある場合
先ほどの.env
ファイル作成例と同じ構成になっているのであれば以下。
<?php
require __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
echo $_ENV['TEST_PASS']; //passwordと出力される
3行目にて、最初に/vendor/autoload.php
を読み込んで、必要なクラスが自動的に読み込まれるようにします。
4〜5行目で環境変数を読み込み。
$_ENV['キー']
で環境変数が扱えるようになりました。
.env
とindex.php
が違う階層にある場合
違う階層にある場合は、少しコードに手を加える必要があります。
例として、以下のディレクトリ構成であるとします。
project
L lib
L index.php
L config
L .env
L vendor(※composerによってインストールされたもの)
L autoload.php
L vlucas 他
その場合は、環境変数を扱うコードが以下に変更になります。
<?php
require __DIR__ . '/../vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../config');
$dotenv->load();
echo $_ENV['TEST_PASS']; //passwordと出力される
3行目のrequireする際のパスを調整しました。
また、4行目の__DIR__.'/../config'
にて.env
があるディレクトリを指定しています。
Unable to read any of the environment file(s)
とエラーが出たときは、.env
までのパスを間違えているので確認してみてください。
コメント