首页 > php学习 > php基础知识 > PHP中的超全局变量
2017
10-14

PHP中的超全局变量

超全局变量是在全部作用域中始终可用的内置变量

$GLOBALS :一个包含了全局作用域中可用的全部变量的组合数组。变量的名字就是数组的键。

$_SERVER :是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

$_GET :通过 URL 参数传递给当前脚本的变量的数组。

$_POST :通过 HTTP POST 方法传递给当前脚本的变量的数组。

$_FILES :通过 HTTP POST 方式上传到当前脚本的项目的数组。

$_COOKIE :通过 HTTP Cookies 方式传递给当前脚本的变量的数组。

$_SESSION :当前脚本可用 SESSION 变量的数组。

$_REQUEST :默认情况下包含了$_GET,$_POST的数组。

$_ENV

是一个包含服务器端所有环境变量的数组。这些变量被从PHP解析器的运行环境导入到PHP的全局命名空间。很多是由支持PHP运行的Shell提供的,并且不同的系统很可能运行着不同种类的Shell,所以不可能有一份确定的列表。可以使用phpinfo()查看Environment选项中的值来获取环境变量列表。

有时候,$_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中的值

getenv ( string $varname )

返回环境变量 varname 的值, 如果环境变量 varname 不存在则返回 FALSE。

putenv ( string $setting )

添加setting到服务器环境变量。 环境变量仅存活于当前请求期间。 成功时返回 TRUE, 失败时返回 FALSE。

设置特定的环境变量也有可能是一个潜在的安全漏洞。 safe_mode_allowed_env_vars 包含了一个以逗号分隔的前缀列表。 在安全模式下,用户可以仅能修改用该指令设定的前缀名称的指令。 默认情况下,用户仅能够修改以 PHP_ 开头的环境变量(例如 PHP_FOO=BAR)。 注意:如果此指令是空的,PHP允许用户设定任意环境变量!

safe_mode_protected_env_vars 指令包含了逗号分隔的环境变量列表,使用户最终无法通过 putenv() 修改。 即使 safe_mode_allowed_env_vars 设置允许修改,这些变量也会被保护。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。