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