初めに
先日、PHPで環境変数の取得と登録方法を調べる機会があったため、備忘録としてまとめます。
PHPで環境変数を扱う
この記事では、PHPでの環境変数の扱い方について、以下の2つの観点からまとめています。
- 環境変数を取得する
- 環境変数を登録する
環境変数を取得する
環境変数はgetenv()
で取得をすることができます。
phpplaygroundでの実行結果がこちら。
<?php
// 環境変数を取得
$env = getenv();
var_dump($env);
// 結果
// array(8) {
// ["USER"] => string(8) "web_user"
// ["LOGNAME"] => string(8) "web_user"
// ["PATH"] => string(1) "/"
// ["PWD"] => string(1) "/"
// ["HOME"] => string(14) "/home/web_user"
// ["LANG"] => string(11) "ja_JP.UTF-8"
// ["_"] => string(14) "./this.program"
// ["USE_ZEND_ALLOC"] => string(1) "0"
// }
引数で取得したい環境変数を指定することも可能です。
// 環境変数を取得
$env = getenv('USER');
var_dump($env);
// 結果
// string(8) "web_user"
また、PHP のスーパーグローバル変数 $_ENV にも、実行時に読み込まれた環境変数が格納されています。ここからも取得可能です。
<?php
// 環境変数を取得
var_dump($_ENV);
// 結果
// array(8) {
// ["USER"] => string(8) "web_user"
// ["LOGNAME"] => string(8) "web_user"
// ["PATH"] => string(1) "/"
// ["PWD"] => string(1) "/"
// ["HOME"] => string(14) "/home/web_user"
// ["LANG"] => string(11) "ja_JP.UTF-8"
// ["_"] => string(14) "./this.program"
// ["USE_ZEND_ALLOC"] => string(1) "0"
// }
環境変数を登録する
環境変数を登録するにはputenv()
を使います。
実際に登録されるわけではなく、現在のリクエストを処理している間のみ登録される一時的なものです。
こちらもphpplaygroundで実行してみました。
// 環境変数を登録
putenv("TEST=aaaa");
// 環境変数を取得
$env = getenv();
var_dump($env);
// 結果
// array(9) {
// ["USER"] => string(8) "web_user"
// ["LOGNAME"] => string(8) "web_user"
// ["PATH"] => string(1) "/"
// ["PWD"] => string(1) "/"
// ["HOME"] => string(14) "/home/web_user"
// ["LANG"] => string(11) "ja_JP.UTF-8"
// ["_"] => string(14) "./this.program"
// ["USE_ZEND_ALLOC"] => string(1) "0"
// ["TEST"] => string(4) "aaaa"
// }
終わりに
今回はPHPでの環境変数の扱い方について簡単にまとめました。
phpplayground試したところ、putenv()
で登録した環境変数は$_ENV
の中には入りませんでした。
ChatGPT曰く、$_ENV は PHP 実行時に初期化される配列で、起動時点の環境変数のスナップショットが格納されています。そのため、スクリプトの実行中に putenv() で追加した値は $_ENV には反映されないようです。なるほど。
ここまでご覧いただきありがとうございました!