PHP $ GLOBALS缺少$ _SERVER

ava*_*sin 5 php global-variables environment-variables

根据http://www.php.net/manual/en/reserved.variables.globals.php:

一个关联数组,包含对当前在脚本全局范围内定义的所有变量的引用.

因此,下面的代码必须显示$ GLOBALS var _SERVER,_ENV(如果在php.ini中的variables_order中启用它)和_REQUEST键:

var_dump($GLOBALS); 
Run Code Online (Sandbox Code Playgroud)

结果是:

  • 在nginx的+ PHP-FPM:失踪_SERVER,_ENV,_REQUEST
  • 在cli下:失踪_ENV,_REQUEST

嗯..也许在这个行为的文档中有smth?我查看了每个变量的每个页面:

我没有发现过这种行为.它为什么这样?

我已经使用http://www.dotdeb.org/ repo的debian软件包安装了php (没有手动编译)...目前运行的是nginx + php5-fpm.这是一个php bug吗?

ava*_*sin 6

我在php.net网站上创建了一个bug,php团队回答:https://bugs.php.net/bug.php?id = 65223

摘要:

这不是一个错误.出于性能原因,默认情况下,超级全局变量(也称为自动全局变量)不会添加到符号表中,除非解析器看到需要.即

<?php $_SERVER; print_r($GLOBALS); ?>

会列出来的.您也可以使用php.ini中的auto_globals_jit来控制它:http://www.php.net/manual/en/ini.core.php#ini.auto-globals-jit

谢谢php团队所以回答这么快!