🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 预定义变量 PHP提供了大量的预定义变量。由于许多变量依赖于运行的服务器的版本和设置,及其他因素,所以并没有详细的说明文档。一些预定义变量在PHP以[命令行](http://php.net/manual/zh/features.commandline.php)形式运行时并不生效。有关这些变量的详细列表,请参阅[预定义变量](http://php.net/manual/zh/reserved.variables.php)一章。 > **Warning** > PHP 4.2.0 以及后续版本中,PHP 指令 [register\_globals](http://php.net/manual/zh/ini.core.php#ini.register-globals) 的默认值为 *off*。这是 PHP 的一个主要变化。让 register\_globals 的值为 *off* 将影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT\_ROOT 的值,将必须使用 [$\_SERVER\['DOCUMENT\_ROOT'\]](http://php.net/manual/zh/reserved.variables.server.php) 代替 $DOCUMENT\_ROOT,又如,使用 [$\_GET\['id'\]](http://php.net/manual/zh/reserved.variables.get.php) 来代替 $id 从 URL *http://www.example.com/test.php?id=3* 中获取 id 值,亦或使用 [$\_ENV\['HOME'\]](http://php.net/manual/zh/reserved.variables.environment.php) 来代替 $HOME 获取环境变量 HOME 的值。 从PHP4.1.0开始,PHP提供了一套附加的预定数组 ,这些数组变量包含了来自web服务(如果可用),运行环境,和用户输入的数据。这些数组非常特别,它们在全局范围内自动生效,例如,在任何范围内自动生效。因此通常被称为自动全局变量(autoglobals)或者超全局变量(superglobals)。(PHP中没有用户自定义超全局变量的机制。)超全局变量罗列于下文中;但是为了得到它们的内容和关于PHP预定义变量的进一步的讨论以及它们的 本质,请参阅[预定义变量](http://php.net/manual/zh/reserved.variables.php)。而且,你也将注意到旧的预定义数组($HTTP\_\*\_VARS)仍旧存在。自 PHP 5.0.0 起, 用 [register\_long\_arrays](http://php.net/manual/zh/ini.core.php#ini.register-long-arrays) 设置选项可禁用 长类型的 PHP [预定义变量](http://php.net/manual/zh/language.variables.predefined.php)数组。 > Note: 可变变量 超级全局变量不能被用作函数或类方法中的[可变变量](http://php.net/manual/zh/language.variables.variable.php)。 > Note:尽管超全局变量和HTTP_*_VARS同时存在,但是它们并不是同一个变量,所以改变其中一个的值并不会对另一个产生影响。 如果某些[variables\_order](http://php.net/manual/zh/ini.core.php#ini.variables-order)中的变量没有设定,它们的对应的PHP预定义数组也是空的。