« 21. 什麼是 HTTP Cookies? | (回到Blog入口) | 23. 如何定義常數(constant)? »

22.如何 讀取系統的環境變數?

jollen 發表於 October 27, 2006 2:20 PM

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

版權聲明

請參閱頁面底部的 CC 授權條款。此外,Jollen's PHP 專欄禁止引用、修改與轉貼,如果您想與朋友分享的話,我們只允許網站連結(hyperlink)的形式。

發表一個評論

(如果你此前從未在此 Blog 上發表過評論,則你的評論必須在 Blog 主人驗證後才能顯示,請你耐心等候。)

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007,2010 www.jollen.org