$_ENV记载了一些系统环境变量(因为牵扯到实际的操作系统,所以不可能给出$_ENV的完整列表)。
但有些朋友的$_ENV是空的,可能是原因是:
你的php.ini的variables_order值为"GPCS",也就是说系统在定义 PHP预定义变量时的顺序是GET,POST,COOKIES,SERVER,没有定义Environment(E),你可以修改php.ini文件的 variables_order值为你想要的顺序,如:"EGPCS"。这时,$_ENV的值就可以取得了
EGPCS值(EGPCS是Environment、Get、Post、Cookies、Server的缩写 -- 这是PHP中外部变量来源的全部范围)
修改一下:
root@raspberrypi:/data/htdocs/t.jackxiang.com# /usr/bin/php -r "phpinfo();"|grep php.ini
Loaded Configuration File => /etc/php5/cli/php.ini
打开这个选项:
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";
; http://php.net/variables-order
; variables_order = "GPCS"
variables_order = "EGPCS"
PHP中的$_ENV :来自:http://blog.sina.com.cn/s/blog_a6bbf41e010169xl.html
============================================================================
PHP中的$_ENV是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它。
$_ENV只是被动的接受服务器端的环境变量并把它们转换为数组元素,你可以尝试直接输出它。
当你想看看一个变量中究竟有什么东西在里面时,我所知道的方式有三种:
1、var_dump($_ENV);
2、print_r($_ENV);
3、foreach($_ENV as $key=>$val){echo $key.'--------'.$val.'<br>';}
这三种方式中,第一种我觉得最方便而且输出的内容格式清晰。
由于$_ENV变量是取决于服务器的环境变量的,从不同的服务器上获取的$_ENV变量打印出的结果可能是完全不同的。所以无法像$_SERVER 那样列出完整的列表。以下是$_ENV 数组包含的比较通用的元素:
有时候,$_ENV会为空,其原因通常是php的配置文件php.ini的配置项为:variables_order = "GPCS"。要想让$_ENV的值不为空,那么variables_order的值应该加上一个大写字母“E”,即:variables_order = "EGPCS"。
上述配置表示了PHP接受的外部变量来源及顺序,EGPCS是Environment、Get、Post、Cookies、Server的缩写。如果variables_order 的配置中缺少E ,则PHP 无法接受环境变量,那么$_ENV 也就为空了。
由于开启$_ENV,即variables_order = "EGPCS"会导致一些性能损失,按php官方的说法是,在生产环境中,不推荐使用。他们更推荐使用getenv (string $varname)函数来获取Environment中的值,而这点需要在编程时就注意到。如果编程时用了$_ENV而variables_order中又没有配置为variables_order = "EGPCS",则程序运行时可能会报错。
但有些朋友的$_ENV是空的,可能是原因是:
你的php.ini的variables_order值为"GPCS",也就是说系统在定义 PHP预定义变量时的顺序是GET,POST,COOKIES,SERVER,没有定义Environment(E),你可以修改php.ini文件的 variables_order值为你想要的顺序,如:"EGPCS"。这时,$_ENV的值就可以取得了
EGPCS值(EGPCS是Environment、Get、Post、Cookies、Server的缩写 -- 这是PHP中外部变量来源的全部范围)
修改一下:
root@raspberrypi:/data/htdocs/t.jackxiang.com# /usr/bin/php -r "phpinfo();"|grep php.ini
Loaded Configuration File => /etc/php5/cli/php.ini
打开这个选项:
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";
; http://php.net/variables-order
; variables_order = "GPCS"
variables_order = "EGPCS"
/usr/local/php/bin/php -r "phpinfo();"|grep variables_order
variables_order => EGPCS => EGPCS
variables_order => EGPCS => EGPCS
PHP中的$_ENV :来自:http://blog.sina.com.cn/s/blog_a6bbf41e010169xl.html
============================================================================
PHP中的$_ENV是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它。
$_ENV只是被动的接受服务器端的环境变量并把它们转换为数组元素,你可以尝试直接输出它。
当你想看看一个变量中究竟有什么东西在里面时,我所知道的方式有三种:
1、var_dump($_ENV);
2、print_r($_ENV);
3、foreach($_ENV as $key=>$val){echo $key.'--------'.$val.'<br>';}
这三种方式中,第一种我觉得最方便而且输出的内容格式清晰。
由于$_ENV变量是取决于服务器的环境变量的,从不同的服务器上获取的$_ENV变量打印出的结果可能是完全不同的。所以无法像$_SERVER 那样列出完整的列表。以下是$_ENV 数组包含的比较通用的元素:
有时候,$_ENV会为空,其原因通常是php的配置文件php.ini的配置项为:variables_order = "GPCS"。要想让$_ENV的值不为空,那么variables_order的值应该加上一个大写字母“E”,即:variables_order = "EGPCS"。
上述配置表示了PHP接受的外部变量来源及顺序,EGPCS是Environment、Get、Post、Cookies、Server的缩写。如果variables_order 的配置中缺少E ,则PHP 无法接受环境变量,那么$_ENV 也就为空了。
由于开启$_ENV,即variables_order = "EGPCS"会导致一些性能损失,按php官方的说法是,在生产环境中,不推荐使用。他们更推荐使用getenv (string $varname)函数来获取Environment中的值,而这点需要在编程时就注意到。如果编程时用了$_ENV而variables_order中又没有配置为variables_order = "EGPCS",则程序运行时可能会报错。
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2762/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2015-8-17 21:54
评论列表