0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PHP】PHPで環境変数を扱う方法(getenv / putenv / $_ENV)

Posted at

初めに

先日、PHPで環境変数の取得と登録方法を調べる機会があったため、備忘録としてまとめます。

PHPで環境変数を扱う

この記事では、PHPでの環境変数の扱い方について、以下の2つの観点からまとめています。

  • 環境変数を取得する
  • 環境変数を登録する

環境変数を取得する

環境変数はgetenv()で取得をすることができます。

phpplaygroundでの実行結果がこちら。

getenv()
<?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 にも、実行時に読み込まれた環境変数が格納されています。ここからも取得可能です。

$_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 には反映されないようです。なるほど。

ここまでご覧いただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?