PHP - $_ENV



$_ENV 是 PHP 中的一個超全域性變數。它是一個關聯陣列,儲存當前指令碼中可用的所有環境變數。$HTTP_ENV_VARS 也包含相同的資訊,但它不是超全域性變數,並且現在已被棄用。

環境變數被匯入到全域性名稱空間中。大多數這些變數由執行 PHP 解析器的 shell 提供。因此,環境變數列表在不同的平臺上可能不同。

如果 PHP 作為伺服器模組或 CGI 處理器執行,則此陣列 ($_ENV) 還包括 CGI 變數。

我們可以使用foreach迴圈來顯示所有可用的環境變數:

<?php
   foreach ($_ENV as $k=>$v)
   echo $k . " => " . $v . "<br>";
?>

在 Windows 作業系統和 XAMPP 伺服器上,您可能會獲得如下所示的環境變數列表:

變數

ALLUSERSPROFILE

C:\ProgramData

APPDATA

C:\Users\user\AppData\Roaming

CommonProgramFiles

C:\Program Files\Common Files

CommonProgramFiles(x86)

C:\Program Files (x86)\Common Files

CommonProgramW6432

C:\Program Files\Common Files

COMPUTERNAME

GNVBGL3

ComSpec

C:\WINDOWS\system32\cmd.exe

DriverData

C:\Windows\System32\Drivers\DriverData

HOMEDRIVE

C −

HOMEPATH

\Users\user

LOCALAPPDATA

C:\Users\user\AppData\Local

LOGONSERVER

\\GNVBGL3

MOZ_PLUGIN_PATH

C:\Program Files (x86)\ Foxit Software\ Foxit PDF Reader\plugins\

NUMBER_OF_PROCESSORS

8

OneDrive

C:\Users\user\OneDrive

OneDriveConsumer

C:\Users\user\OneDrive

OS

Windows_NT

Path

C:\Python311\Scripts\;

C:\Python311\;

C:\WINDOWS\system32;

C:\WINDOWS;

C:\WINDOWS\System32\Wbem;

C:\WINDOWS\System32\WindowsPowerShell\ v1.0\;

C:\WINDOWS\System32\OpenSSH\;

C:\xampp\php;

C:\Users\user\AppData\Local\Microsoft\ WindowsApps;

C:\VSCode\Microsoft VS Code\bin

PATHEXT

.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE; .WSF;.WSH;.MSC;.PY;.PYW

PROCESSOR_ARCHITECTURE

AMD64

PROCESSOR_IDENTIFIER

Intel64 Family 6 Model 140 Stepping 1, GenuineIntel

PROCESSOR_LEVEL

6

PROCESSOR_REVISION

8c01

ProgramData

C:\ProgramData

ProgramFiles

C:\Program Files

ProgramFiles(x86)

C:\Program Files (x86)

ProgramW6432

C:\Program Files

PSModulePath

C:\Program Files\WindowsPowerShell\Modules;

C:\WINDOWS\system32\WindowsPowerShell\v1.0\ Modules

PUBLIC

C:\Users\Public

SystemDrive

C −

SystemRoot

C:\WINDOWS

TEMP

C:\Users\user\AppData\Local\Temp

TMP

C:\Users\user\AppData\Local\Temp

USERDOMAIN

GNVBGL3

USERDOMAIN_ROAMINGPROFILE

GNVBGL3

USERNAME

user

USERPROFILE

C:\Users\user

windir

C:\WINDOWS

ZES_ENABLE_SYSMAN

1

__COMPAT_LAYER

RunAsAdmin Installer

AP_PARENT_PID

10608

您也可以訪問單個環境變數的值。此程式碼獲取 PATH 環境變數:

<?php
   echo "Path: " . $_ENV['Path'];
?>

它將產生以下輸出

Path:
C:\Python311\Scripts\;C:\Python311\;C:\WINDOWS\system32;
C:\WINDOWS;C:\WINDOWS\System32\Wbem;
C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\WINDOWS\System32\OpenSSH\;C:\xampp\php;
C:\Users\mlath\AppData\Local\Microsoft\WindowsApps;
C:\VSCode\Microsoft VS Code\bin

注意 - $_ENV 陣列可能會產生空結果,具體取決於 "php.ini" 設定 "variables_order"。您可能需要編輯 "php.ini" 檔案並將variables_order="EGPCS"設定為variables_order="GPCS"值。

getenv() 函式

PHP 庫提供 getenv() 函式來檢索所有環境變數的列表或特定環境變數的值。

以下指令碼顯示所有可用環境變數的值:

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

要獲取特定變數的值,請使用其名稱作為 getenv() 函式的引數:

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

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
廣告