PHPでサーバーの環境ごとに設定ファイルを用意する場合、config.phpなどのファイルにデータベースの接続情報やAPIのキーなどをdefineで登録すると思います。
これは昔からある一般的なやり方ですが、例えば「ローカル環境やテスト環境と本番環境で情報を出し分けたい」「GitHubやSubversionなどに接続情報を管理されたくない」ということがあるかと思います。
Linuxの場合は「.env」でユーザーごとの情報をあらかじめ設定することが可能ですが、PHPだとデフォルトでは環境変数を取り扱うことができません。
そこでPHPでも環境変数を使えるようにするライブラリが「phpdotenv」です。
インストール方法
いつものComposerでインストールを行います。
1 |
composer require vlucas/phpdotenv |
相変わらず簡単ですね
使い方
環境変数のファイルを作成します。基本的に「.env」というファイルを作成し、そこに記述します。
1 2 |
API_KEY=hogehoge SECRET_KEY=xxxxxxxxxx |
こんな感じで記述します。
次にPHPから呼び出します。
1 2 3 4 5 6 7 8 |
<?php // Composerのautoload require_once __DIR__ . '/vendor/autoload.php'; // .envの配置しているパスを設定(サンプルはプログラムと同一階層) $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); |
ここまで設定できると、環境変数を使用することができます。
下記のように$_ENVのスーパーグローバルで操作します。
1 2 |
<?php $api_key = $_ENV['API_KEY']; // 'hogehoge'が代入される |
昔は「getenv(‘API_KEY’);」で使えたようですが、今は非推奨ぽいです。
ちなみに.env以外のファイルを読むことも可能です。
第二引数でファイル名を設定してください。
1 2 |
// .kankyou を読み出す場合 $dotenv = Dotenv\Dotenv::createImmutable(__DIR__, 'kankyou'); |
あとはファイル管理で「.env」を管理ファイルから除外すれば、ファイル管理ソフトには入りません。
フォーマットとして「.env.example」として保存し、各環境に.envにリネームしてから情報を書き込みましょう!