Intereting Posts
Почему точка с запятой необязательна в последнем утверждении в php? Проверить сеанс из представления в CodeIgniter PHP, получение переменной из другого php-файла PHP просматривает только 20 загружаемых файлов за раз Использование magic_quotes () влияет на использование mysql_real_escape_string () Как сделать время окончания токена Как получить электронную почту и обработать ее в веб-приложении PHP-объект, подобный массиву Как эффективно искать в Subarrays в PHP? Программно извлекать ключевые слова из доменных имен PHP читает все содержимое строки при выборе флажка извлечение содержимого из pdf с помощью PHP Получение ошибки при попытке инициализации этой публичной переменной класса с использованием dirname () вне метода как объявить php-класс с именем переменной Существуют ли какие-либо библиотеки PHP для разбора ASN.1 или генерирования PHP-кода на его основе?

PHP $ GLOBALS отсутствует $ _SERVER

Согласно http://www.php.net/manual/en/reserved.variables.globals.php :

Ассоциативный массив, содержащий ссылки на все переменные, которые в настоящее время определены в глобальной области действия сценария.

Итак, следующий код должен отображать, что $ GLOBALS var имеет _SERVER , _ENV (если он включен в переменных_order в php.ini) и клавиши _REQUEST :

 var_dump($GLOBALS); 

Результат:

  • В nginx + php-fpm: отсутствует _SERVER , _ENV , _ENV
  • Под cli: отсутствует _ENV , _ENV

Хм .. может быть, есть что-то в документах об этом поведении? Я просматривал каждую страницу для каждой переменной:

  • _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/ repo (ничего не было скомпилировано вручную) … В настоящее время работает с nginx + php5-fpm. Это ошибка php?

Solutions Collecting From Web of "PHP $ GLOBALS отсутствует $ _SERVER"

Я создал ошибку на веб-сайте 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 team, так ответьте так быстро!