PHP & Laravel Gold Tech Log

PHP & Laravel を中心にしたWeb関連開発技術の紹介

PHP dotenv (phpdotenv) 環境変数を本番、検証、開発環境毎に分ける

      2016/04/21

はじめに

開発環境や検証環境、本番環境、Webサーバの種類などに依存せず、環境毎に異なる環境変数を持ちたい場合、.env のような環境ファイルを個別に書き出し、それを環境毎に後から読み込ませるための方法です。.htaccess に環境変数を設定する方法もありますが、これだとApacheをローカルの開発環境で立てたりしないと検証ができなくなります。phpdotenvを利用すれば、PHP標準のビルトインサーバでデバックすることもできるようになります。
Laravelでも環境変数を読み込むのに、この PHP dotenv を使っています。

・Apacheを立てずにロカール開発環境でテストをしたい
・開発、検証、本番環境毎に環境変数をキレイに分けたい

PHP dotenvをComposerでインストール

$ curl -s http://getcomposer.org/installer | php
$ php composer.phar require vlucas/phpdotenv

環境変数を読み込む

環境ファイルから環境変数を読み込むプログラムです。

index.php

<?php
require '../vendor/autoload.php';
...
...
// 環境変数の読み込み
$dotenv = new Dotenv\Dotenv(__DIR__ . '/..');
$dotenv->load();
...
...

環境設定ファイル

設定する環境ファイルです。ファイル名は、「.env」にします。書式は、「環境名=環境変数」です。

.env

APP_ENV=development
APP_DEBUG=true

DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=mysql
MAIL_DRIVER=log

環境ファイルをドキュメント・ルート以下に配置するのは危険ですので、その上のディレクトリ等に配置するようにしましょう。設定漏れにより環境ファイルがブラウザから直接参照できてしまう可能性があります。

設定した環境変数を getenv() で取得

設定した環境変数は、getenv() で取得できます。

$user = getenv('DB_USERNAME');
$password = getenv('DB_PASSWORD');

 - PHP, フレームワーク