PHP 可以將系統的環境變數自動存成 PHP 的變數,例如:
echo $HOME
表示顯示系統中的 HOME 環境變數。有時 PHP 的變數會和系統中的環境變數重覆,為了確保我們讀取的是正確的系統環境變數,可以利用 getenv 來讀取環境變數,利用 putenv 存放環境變數。
在 UNIX 系統底下可利用 env 命令來查詢系統的環境變數:
linux# env BASH=/bin/bash BASH_VERSION=1.14.7(1) BROWSER=/usr/bin/netscape COLUMNS=80 DISPLAY=localhost:0.0 ENV=/root/.bashrc EUID=0 HISTFILE=/root/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/root HOSTNAME=localhost.localdomain HOSTTYPE=i386 . . . linux# echo $HOME /root
顯示系統的 HOME 環境變數,在 PHP 裡也是利用 $HOME 變數來存取環境變數的 HOME:
echo "HOME: ". $HOME . "<br>";
輸出結果:
HOME: /root
只要在環境變數名稱前加上 $ 符號即可。
另外一種讀取系統環境變數的做法則是透過 $HTTP_ENV_VARS 陣列,因此前面的寫法可以改成:
echo $HTTP_ENV_VARS["HOME"];
PHP 4.1.0 與之後的版本改由 $_ENV 陣列讀取系統環境變數,但 $HTTP_ENV_VARS 的做法仍然可以使用。
PHP 4.2.0 與之後的版本讀取系統的環境變數時,預設將不會自動將環境變數註冊為全域變數,因此請由 $HTTP_ENV_VARS 或 $_ENV 陣列來讀取或是設定 php.ini 的 register_globals 項目 (On)。
PHP 5 只能經由 $ENV 陣列來讀取環境變數,以往設定 register_globals 項目與使用 $HTTP_ENV_VARS 的做法將不再支援。
--jollen