PHPでの .env 参考サイト
公式のREAD ME.md 日本語訳
概要
dotenv(.env) というライブラリを使い、アプリケーション内で使用する環境変数を読み込む。
dotenvはファイルから環境変数を読み込み、$_SERVER
やgetenv()
を使用して設定した環境変数を読み込むことができる。
データベースの接続情報やAPIの鍵といったGitなどの バージョン管理に含めることができない 設定値をアプリケーションで利用するために.env
ファイルを作成する。
しかし、バージョン管理外にすると、何を.env
ファイルに記述すればよいか分からなくなってしまうため、.env
の設定値をダミーデータにして.env.example
のようなファイルをバージョン管理下に指定する。
使い方
- PHP アプリケーションを作成するディレクトリ(index.php がある階層)に
vlucas/phpdotenv
をインストールする。
composer require vlucas/phpdotenv
-
.env
ファイルの作成
DB_HOST=localhost
DB_USER=user
DB_PASS=password
DB_NAME=database
- PHPファイルで環境変数を呼び出す
#vendorファイルを読み込む
require_once __DIR__ . '/vendor/autoload.php';
#dotenvを使用する
$dotenv = new Dotenv\Dotenv(__DIR__); // .envファイルがあるディレクトリを指定
$dotenv->load(); // .envファイルから環境変数を読み込み
通常の環境変数を呼び出すのと同じようにgetenv()
、$_SERVER
、$_ENV
と複数の方法で環境変数を呼び出すことができる。
<?php
require_once __DIR__ . '/vendor/autoload.php';
$dotenv = new Dotenv\Dotenv(__DIR__); // .envファイルがあるディレクトリを指定
$dotenv->load(); // .envファイルから環境変数を読み込み
// 通常の環境変数を同じように下記のどの方法でも環境変数を呼び出せます
$host = getenv('DB_HOST');
$user = $_SERVER['DB_USER'];
$password = $_ENV['DB_PASS'];
$dsn = "mysql:host={$host};charset=utf8;";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
$this->pdo = new PDO($dsn, $user, $password, $options);
docker-compose での .env 参考サイト
公式
環境変数の与え方
1. ホスト側で環境変数を設定する
2. .env
ファイルをdocker-compose.yml
と同じ階層に置いておく
3. docker-compose
時に--env_file
オプションを付けて.env
の代わりにファイルを指定する
利用される環境変数の優先順位
- ホストで設定した環境変数
-
.env
ファイル
注意すること
-
.env
ファイルの内容はすべて テキスト として扱われるので、数値やbool値として環境変数を使用することはできない。 -
.env
ファイルを守る
.htaccess
で.env
ファイルへの アクセス拒否設定 をしたり、.env
ファイルの パーミッション(400) を見直す。 -
.env
ファイルを 公開領域外 へ
env_file と .env の違い