$_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");
?>
浏览器将显示以下输出 -