根據http://www.php.net/manual/en/reserved.variables.globals.php:
一個包含連接至在腳本的全局範圍目前定義 所有變量的引用數組。
所以,下面的代碼必須顯示$ GLOBALS變種具有_SERVER
,_ENV
(如果在php.ini中的variables_order啓用)和_REQUEST
鍵:
var_dump($GLOBALS);
結果是:
- Under nginx + php-fpm:missing
_SERVER
,_ENV
,_REQUEST
- 在CLI:缺少
_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
,我發現沒有提到關於這種行爲。爲什麼它像那樣工作?
我已經安裝了PHP使用debian包從http://www.dotdeb.org/回購(沒有手動編譯)...目前與nginx + php5-fpm運行。 這是一個PHP的錯誤?
如果你做了'var_dump($ _ SERVER);'? – HamZa
我不確定,但看看['variables_order'](http://www.php.net/manual/en/ini.core.php#ini.variables-order)ini設置 –
$ _SERVER也是一個超全局變量,與$ GLOBALS相同,這就是爲什麼它不存儲在$ GLOBALS中:'這是一個'超全球'或自動全局變量。這僅僅意味着它在整個腳本的所有範圍內都可用。沒有必要做全局$變量;在函數或方法中訪問它.'和'$ _SERVER是一個包含標題,路徑和腳本位置等信息的數組。該數組中的條目由Web服務器創建。不能保證每個Web服務器都會提供這些服務器;服務器可能會省略一些,或者提供其他未在此處列出的其他服務器......# – 2013-07-09 10:22:14