PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPの$_ENVとは?環境変数の取得と設定方法をgetenv()・putenv()とともに解説

はじめに

$_ENVは、PHPにおけるスーパーグローバルな連想配列の一つです。現在実行中のスクリプトから利用可能な環境変数が格納されています。かつては$HTTP_ENV_VARSという変数にも同じ情報が含まれていましたが、こちらはスーパーグローバルではなく、すでに非推奨(deprecated)となっています。

環境変数はPHPのグローバル名前空間に取り込まれます。これらの変数の多くは、PHPパーサーが動作しているシェルによって提供されるため、プラットフォームごとに環境変数の一覧は異なる点に注意が必要です。

また、PHPがサーバーモジュールまたはCGIプロセッサとして動作している場合は、CGI関連の変数もこの配列に含まれます。

PHPには、すべての環境変数の一覧や特定の環境変数の値を取得するためのgetenv()関数が用意されています。

getenv()関数で環境変数を取得する

次のスクリプトは、利用可能なすべての環境変数のキーと値を表示します。

<?php
$arr = getenv();
foreach ($arr as $key => $val) {
    echo "$key => $val\n";
}
?>

特定の環境変数の値を取得したい場合は、引数にその変数名を指定してgetenv()関数を呼び出します。

使用例:PATH環境変数の取得

<?php
echo "Path: " . getenv("PATH");
?>

出力結果

ブラウザには以下のような結果が表示されます。

Path: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/bin

putenv()関数で環境変数を設定する

PHPには、新しい環境変数を作成するためのputenv()関数も用意されています。ただし、この方法で設定した環境変数は、現在のリクエストが終了するまでしか存在しない点に注意してください。

また、一部の環境変数の値を変更することは避けるべきです。デフォルトでは、ユーザーが設定できるのはPHP_で始まる環境変数(例:PHP_FOO=BAR)のみとなっています。

さらに、php.iniのsafe_mode_protected_env_varsディレクティブには、カンマ区切りのリストで保護対象の環境変数が定義されており、エンドユーザーはputenv()を使ってこれらの変数を変更できません。

使用例:一時的な環境変数の設定

<?php
putenv("PHP_TEMPUSER=GUEST");
echo "Temp user: " . getenv("PHP_TEMPUSER");
?>

出力結果

ブラウザには以下のように表示されます。

Temp user: GUEST

まとめ

$_ENVはスーパーグローバル配列として環境変数へのアクセスを提供し、getenv()による個別の取得、putenv()による一時的な設定が可能です。ただし、putenv()で設定した値はリクエストの間のみ有効であり、セキュリティ上の制限もあるため、扱いには十分注意しましょう。

  1. Rubyで環境変数を使う方法|ENVオブジェクトの操作から設定・Rails credentialsまで徹底解説

    環境変数とは、次のような「キーと値」のペアとして表されるデータのことです。 KEY=VALUE この変数は、パソコン上で動くすべてのプログラム間で設定情報(コンフィグ)を共有するために使われています。 だからこそ、環境変数がどのような仕組みで動作し、Rubyプログラムから特殊な ENV オブジェクトを使ってどうアクセスするのかを学んでおくことが大切なのです。 環境変数の活用例 デフォルトエディターの設定 Rubyにgemの保存場所を伝える(GEM_PATH / GEM_HOME) APIキーをGitリポジトリにコミットすることなくアプリケーションへ渡す OSがバイナリファイル(Windo

  2. Windows 10 で環境変数を設定・編集する方法を初心者向けに解説

    環境変数とは、PC上で動作するプログラムの設定に使われるグローバルな値のことです。名前だけ聞くと難しく感じられますが、実際には「さまざまなアプリが共通して参照できる設定情報の保管場所」と考えると分かりやすいでしょう。 環境変数にはユーザーごとに紐づくものがあり、ユーザーアカウントが異なれば設定内容も変わります。その一方で、「%windir%」のようなシステム全体で共通の変数も存在します。たとえば「%windir%」は、Windowsがインストールされているディレクトリ(例:「C:\Windows」)を常に指します。アプリ側ではこの値を直接ハードコードせず、「%windir%」を参照することでW