根据http://www.php.net/manual/en/reserved.variables.globals.php:
一个关联数组,包含对所有变量的引用 目前在脚本的全局范围内定义。
因此,以下代码必须显示$ GLOBALS var具有_SERVER
,_ENV
(如果在php.ini中的variables_order中启用)和_REQUEST
键:
var_dump($GLOBALS);
结果是:
_SERVER
,_ENV
,_REQUEST
_ENV
,_REQUEST
_SERVER
:http://www.php.net/manual/en/reserved.variables.server.php _ENV
:http://www.php.net/manual/en/reserved.variables.request.php _REQUEST
:http://www.php.net/manual/en/reserved.variables.request.php 我没有发现过这种行为。它为什么这样?
我使用来自http://www.dotdeb.org/ repo的debian软件包安装了php(没有手动编译)...目前正在使用nginx + php5-fpm运行。 这是一个php bug吗?
答案 0 :(得分:6)
我在php.net网站上创建了一个错误,php团队回答:https://bugs.php.net/bug.php?id=65223
要点:
这不是错误。不添加超级全局(又名自动全局) 除非解析器,否则出于性能原因默认使用符号表 看到需要。即
<?php $_SERVER; print_r($GLOBALS); ?>
会列出来的。您也可以使用auto_globals_jit来控制它 php.ini中: http://www.php.net/manual/en/ini.core.php#ini.auto-globals-jit
感谢php团队如此快速地回答!