$_ENV 是 PHP 中的超全局变量。它是一个关联数组,用于存储当前脚本中可用的所有环境变量。$HTTP_ENV_VARS 也包含相同的信息,但它不是超全局变量,现在已被弃用。
环境变量将导入到全局命名空间中。这些变量中的大多数是由运行 PHP 解析器的 shell 提供的。因此,环境变量列表在不同平台上可能有所不同。
这个数组 ($_ENV) 还包括 CGI 变量,以防 PHP 作为服务器模块或 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'];
?>
它将产生以下输出 -
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_” 开头的环境变量 (e.g. PHP_FOO=BAR)。
“php.ini”中“safe_mode_protected_env_vars”指令包含以逗号分隔的环境变量列表,最终用户无法使用 putenv() 更改这些变量。
<?php
putenv("PHP_TEMPUSER=GUEST");
echo "Temp user: " . getenv("PHP_TEMPUSER");
?>
浏览器将显示以下输出 -

