$_ENV是PHP中的另一个超全局关联数组。它存储当前脚本可用的环境变量。$HTTP_ENV_VARS也包含相同的信息,但不是超全局信息,现已弃用。
环境变量被导入全局命名空间。这些变量大多数由运行PHP解析器的shell提供。因此,环境变量的列表在不同平台上可能会有所不同。
如果PHP是作为服务器模块还是CGI处理器运行,则此数组还包含CGI变量。
PHP库具有getenv()函数来检索所有环境变量的列表或特定环境变量的值
以下脚本显示所有可用环境变量的值
<?php $arr=getenv(); foreach ($arr as $key=>$val) echo "$key=>$val "; ?>
为了获得特定变量的值,使用其名作为参数的getenv()
函数
<?php echo "Path: " . getenv("PATH"); ?>
输出结果
浏览器将显示类似于以下内容的结果
Path: /usr/local/bin/factor:/root/.sdkman/candidates/kotlin/current/bin:/usr/GNUstep/System/Tools:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/scriba/bin:/usr/local/smlnj/bin:/usr/local/bin/std:/usr/local/bin/extra:/usr/local/fantom/bin:/usr/local/dart/bin:/usr/libexec/sdcc:/usr/local/icon-v950/bin:/usr/local/mozart/bin:/opt/Pawn/bin:/opt/pash/Source/PashConsole/bin/Debug/:.:/root/.sdkman/candidates/kotlin/current/bin:/usr/bin:/sbin:/bin
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