phpdotenvライブラリを使用してPHPで.envファイルを読み込ませる方法
CodeIgniterを勉強していた際に各種設定は「.env」というファイルに記述していたが、素のPHPで作ったサイトでもこのような形で実装したい(セキュリティ面でこの方が良いらしい)。phpdotenvライブラリを導入することで対応できるそうなので以下に導入方法をメモ。
phpdotenv
公式サイト
https://github.com/vlucas/phpdotenv
導入方法
phpdotenvのインストール
サーバにSSH接続し以下コマンドでインストールする。
composer require vlucas/phpdotenv
.envファイルの作成
以下を記述したファイルを.envという名前でアップロードする。
ID = "test_id" PASS = "test_pass"
.envファイルの読み込み
.envファイルと同ディレクトリに以下を記述したファイルをアップロードする。
<?php require_once 'vendor/autoload.php'; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); //以下はtest_idが出力される var_dump($_ENV['ID']); var_dump($_SERVER['ID']); //以下はtest_passが出力される var_dump($_ENV['PASS']); var_dump($_SERVER['PASS']);
ブラウザで上記ページを開くとvar_dumpでの出力が確認できる筈。
注意点
数値やbool値は使用できない
こちらのサイトによると.envファイルはテキストとして扱われるため、数値やbool値は設定できない模様。
セキュリティ対策の必要あり
セキュリティ対策をしていない場合、ブラウザから.envファイルが閲覧できる点に注意。
以下のような形でセキュリティ対策を行う必要がある。
- ルートディレクトリより上に設置する
- Basic認証をかける
- .envファイルにアクセスできないようにする
.htaccessによる.envファイルへのアクセス拒否
<FilesMatch "^\.env">
deny from all
</FilesMatch>
参考サイト
https://qiita.com/hm-om/items/a1dde0a333927eb9ed70
関連記事
-
-
Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法
先日PHPのエラーメッセージを見やすくするwhoopsの利用方法をメモしたが導入 ...
-
-
PHPで画像を比較して類似度を算出する「image-comparator」ライブラリの利用方法
PHPで画像の類似度を計測したい。ただ、そのためのロジックが全く分からないためラ ...
-
-
jQuery UIでカレンダーピッカー(Datepicker)の利用方法
フォーム等で日付を入力する際にカレンダーピッカー機能を実装することがある。その際 ...
-
-
PHPのHTTPリクエストライブラリ「Requests for PHP」の利用方法
PHPで外部のAPI等にリクエストする際に可能であればfile_get_cont ...
-
-
JavaScriptでオブジェクトをzlib圧縮してCookieに保存できる「zcookies」ライブラリの利用方法
あるシステムでCookieを保存している部分があった。ただ、日本語を保存している ...