$ _SERVER не существует

Я только что установил WAMP, и я могу получить доступ к localhost и получить выход phpinfo ().

Однако, хотя я вижу, что _SERVER ['REQUEST_METHOD'] установлен в GET, я пытаюсь использовать следующий PHP:

if ($_SERVER["REQUEST_METHOD"]=="POST") { ... 

но он вызывает эту ошибку:

Примечание PHP: Неопределенный индекс: REQUEST_METHOD в C: \ … \ test.php в строке 40

Используя Komodo, чтобы остановить на строке 40 и проверить $ _SERVER – он вообще не имеет «REQUEST_METHOD» в массиве – даже GET.

У кого-нибудь есть идеи? Должен ли я включать POST, REQUEST_METHOD?

Почему я вижу REQUEST_METHOD = GET в phpinfo, но не в скрипте PHP.

Я также пробовал:

 <?php ob_start(); phpinfo(); $info = ob_get_contents(); ob_end_clean(); ?> 

Я генерирую часть phpinfo (если смотреть в браузере, используя localhost /? Phpinfo = 1), но не все. Почему нет?

Большинство директив $ _SERVER устанавливаются веб-сервером. Если вы используете WAMP, который будет Apache. Вы можете проверить свою конфигурацию apache, чтобы узнать, почему это значение не установлено.

Лучше проверить наличие ценностей, прежде чем пытаться их использовать.

 $value = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : null; 

Вы можете даже использовать метод getenv (), чтобы сократить это.

 $value = getenv('REQUEST_METHOD'); 

Также нет необходимости делать

 <?php ob_start(); phpinfo(); $info = ob_get_contents(); ob_end_clean(); ?> 

Это все, что вам нужно в пустом файле PHP.

 <?php phpinfo(); 

Я бы написал ваш пример следующим образом:

 $request_method = strtoupper(getenv('REQUEST_METHOD')); $http_methods = array('GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'); if( ! in_array($request_method, $http_methods) { die('invalid request'); }