PHPで環境変数(.env)を読み込む方法

環境変数.envを読み込む方法

環境ごとに違う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内において環境変数を扱うことが出来ます。

.envindex.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['キー']で環境変数が扱えるようになりました。

.envindex.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までのパスを間違えているので確認してみてください。

環境変数.envを読み込む方法

この記事が気に入ったら
いいね または フォローしてね!

SHARE
  • URLをコピーしました!

コメント

コメントする

目次