预定义变量
在线手册:中文 英文
PHP手册

$_ENV

$HTTP_ENV_VARS [已弃用]

$_ENV -- $HTTP_ENV_VARS [已弃用]环境变量

说明

通过环境方式传递给当前脚本的变量的数组

这些变量被从 PHP 解析器的运行环境导入到 PHP 的全局命名空间。很多是由支持 PHP 运行的 Shell 提供的,并且不同的系统很可能运行着不同种类的 Shell,所以不可能有一份确定的列表。请查看你的 Shell 文档来获取定义的环境变量列表。

其他环境变量包含了 CGI 变量,而不管 PHP 是以服务器模块还是 CGI 处理器的方式运行。

$HTTP_ENV_VARS 包含相同的信息,但它不是一个超全局变量。 (注意 $HTTP_ENV_VARS$_ENV 是不同的变量,PHP 处理它们的方式不同)

更新日志

版本 说明
4.1.0 引入 $_ENV,弃用 $HTTP_ENV_VARS

范例

Example #1 $_ENV 范例

<?php
echo 'My username is ' .$_ENV["USER"] . '!';
?>

假设 "bjori" 运行此段脚本

以上例程的输出类似于:

My username is bjori!

注释

Note:

“Superglobal”也称为自动化的全局变量。 这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

参见


预定义变量
在线手册:中文 英文
PHP手册
PHP手册 - N: 环境变量

用户评论:

Anonymous (03-Mar-2012 12:46)

Regarding [david at davidfavor dot com 07-Feb-2012 02:07]; not true (at least for me, running PHP 5.3.9 on Windows 7):

My php.ini file (not containing "E"): variables_order = "GPCS"

<?php
var_dump
($_ENV); // => array, empty
echo getenv('OS'); // => Windows_NT
?>

david at davidfavor dot com (07-Feb-2012 10:07)

Comments for this page seem to indicate getenv() returns environment variables in all cases.

For getenv() to work, php.ini variables_order must contain 'E'.

anonymous (09-Sep-2010 06:36)

If $_ENV is empty because variables_order does not include it, it will be filled with values fetched by getenv().

For example, when calling getenv("REMOTE_ADDR"), $_ENV['REMOTE_ADDR'] will be defined as well (if such an environment variable exists).

gabe-php at mudbugmedia dot com (26-May-2010 05:11)

If your $_ENV array is mysteriously empty, but you still see the variables when calling getenv() or in your phpinfo(), check your http://us.php.net/manual/en/ini.core.php#ini.variables-order ini setting to ensure it includes "E" in the string.

php at isnoop dot net (01-Apr-2010 05:33)

If you wish to define an environment variable in your Apache vhost file, use the directive SetEnv.

SetEnv varname "variable value"

It is important to note that this new variable will appear in $_SERVER, not $_ENV.

ewilde aht bsmdevelopment dawt com (20-Mar-2009 01:48)

When running a PHP program under the command line, the $_SERVER["SERVER_NAME"] variable does not contain the hostname. However, the following works for me under Unix/Linux and Windows:

<?php
if (isset($_ENV["HOSTNAME"]))
   
$MachineName = $_ENV["HOSTNAME"];
else if  (isset(
$_ENV["COMPUTERNAME"]))
   
$MachineName = $_ENV["COMPUTERNAME"];
else
$MachineName = "";
?>