UPDATE:2021年06月20日
PHP $_ENV(環境変数)のすべて!【初心者向け基本】
$_SESSION(セッション変数) 簡単まとめ
- $_ENV は PHPの定義済み変数(=スーパーグローバル変数)の1つ
- $_ENV は 現在の環境変数の値
- $_ENV は phpinfo() で環境変数を確認できる
- $_ENV は 連想配列として使用する
- $_ENV は、関数やメソッドの内部で使用する場合、global $_ENV; とする必要がない
$_ENV(環境変数)とは
- $_ENV は PHPの定義済み変数(=スーパーグローバル変数)の1つ
- $_ENV は 現在の環境変数の値
- $_ENV は phpinfo() で環境変数を確認できる
- $_ENV は 連想配列として使用する
- $_ENV は、関数やメソッドの内部で使用する場合、global $_ENV; とする必要がない
$_ENVは、PHPの定義済み変数の環境変数です。この変数は、現在のスクリプトに渡された環境の値の変数です。ドキュメントルートのルートディレクトリやサーバーのIPアドレスなどの環境情報を取得することが出来ます。
環境変数はPHPパーサが実行されている環境に依存します。定義されている環境変数の内容については使用しているシェルのドキュメントを確認して下さい。
パーサ:プログラムのソースコードやXML文書など、一定の文法に従って記述された複雑な構造のテキスト文書を解析し、プログラムで扱えるようなデータ構造の集合体に変換するプログラムのこと。そのような処理のことを「構文解析」「パース」(perse)という。
phpinfo()関数のEnvironmentで環境変数のリストを確認できます。
以下は環境変数のリストの例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <!-- サンプルコード --> DOCUMENT_ROOT GATEWAY_INTERFACE HTTP_ACCEPT HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_CONNECTION HTTP_HOST HTTP_USER_AGENT PATH PHPRC QUERY_STRING REDIRECT_STATUS REMOTE_ADDR REMOTE_PORT REQUEST_METHOD REQUEST_URI SCRIPT_FILENAME SCRIPT_NAME SERVER_ADDR SERVER_ADMIN SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SIGNATURE SERVER_SOFTWARE UNIQUE_ID |
$_ENV のデータ型は配列であり、この配列変数は、連想配列として使用します。
1 2 3 4 5 | <!-- サンプルコード --> <?php //$_ENV連想配列で取得 echo '$_ENV[\'REMOTE_ADDR\']で取得 <b>[ '.$_ENV['REMOTE_ADDR']." ]</b><br>\n"; ?> |
また、環境変数は getenv() 関数 で取得することも出来ます。
1 2 3 4 5 6 | <!-- サンプルコード --> <?php //getenv()で取得 $iIp = getenv('REMOTE_ADDR'); echo 'getenv(\'REMOTE_ADDR\')で取得 <b>[ '.$iIp." ]</b><br>\n"; ?> |
$_ENVは、スーパーグローバル変数なので、スクリプトのコード中どこからでも使用することが出来る変数です。関数やメソッドの内部で使用する場合にも global $_ENV; とする必要はありません。
$_ENVはPHPの定義済み変数
PHPの定義済み変数はスーパーグローバル変数とも言います。
$_ENV = PHPの定義済み変数 = スーパーグローバル変数
また、$_ENVは自動グローバル変数とも呼ばれます。
(PHPには定義済みの定数というものもあります。詳細はこちらを参照下さい。)
PHPの定義済み変数(=スーパーグローバル変数)
$GLOBALS (グローバル変数) | ・グローバルスコープで使用可能なすべての変数への参照 ・連想配列として使用 |
---|---|
$_SERVER (サーバー変数) | ・サーバ情報および実行時の環境情報 ・連想配列として使用 |
$_GET (ゲット変数) | ・HTTP GET 変数 ・連想配列として使用 |
$_POST (ポスト変数) | ・HTTP POST 変数 ・連想配列として使用 |
$_FILES (ファイル変数) | ・HTTP ファイルアップロード変数 ・連想配列として使用 |
$_REQUEST (リクエスト変数) | ・HTTP リクエスト変数 ・連想配列として使用 |
$_SESSION (セッション変数) | ・セッション変数 ・連想配列として使用 |
$_ENV (環境変数) | ・環境変数 ・連想配列として使用 |
$_COOKIE (クッキー変数) | ・HTTP クッキー ・連想配列として使用 |
これら、PHPの定義済み変数は、プログラムコード中何処からでも使用することができます。関数の内部でも globalキーワードを使用せず呼び出すことが出来ます。このように、スーパーグローバル変数は非常に便利なものです。
通常、変数には有効範囲などのルールがあります。このルールは、PHPにおいて変数のスコープという宣言の場所とそれによる有効範囲として定められています。スコープには、「グローバルスコープ」「ローカルスコープ」「スタティック変数」「関数の引数」の4種類ありますが、これらすべてのスコープを持っているのがスーパーグローバル変数です。
変数のスコープについてはこちらを参照下さい。
※注意2:
ただし、スーパーグローバル変数は、関数やクラスメソッドの中の 可変変数 として使用することはできません。
可変変数についてはこちらを参照下さい。
サンプルコード
1 2 3 4 5 6 7 8 9 10 | <!-- サンプルコード --> <h3>$_ENV変数</h3> <?php //$_ENV連想配列で取得 echo '$_ENV[\'REMOTE_ADDR\']で取得 <b>[ '.$_ENV['REMOTE_ADDR']." ]</b><br>\n"; //getenv()で取得 $iIp = getenv('REMOTE_ADDR'); echo 'getenv(\'REMOTE_ADDR\')で取得 <b>[ '.$iIp." ]</b><br>\n"; ?> |
$_ENV[‘REMOTE_ADDR’]で取得 [ 121.103.18.189 ]
getenv(‘REMOTE_ADDR’)で取得 [ 121.103.18.189 ]
タグ(=記事関連ワード)
日付
最終更新日:2021年06月20日