Zend Server Windows - Заголовок авторизации не передается в скрипт PHP
У меня есть приложение PHP, которое должно выполнять базовую аутентификацию HTTP независимо от сервера Apache.
На Linux-машинах с установленным php через apt-get php
Я считаю, что Authorization
заголовок не появляется в $_SERVER
, но доступно через apache_request_headers()
или же getallheaders()
,
На компьютере для разработки Windows с Zend Server 6.1.0 / PHP 5.4 я не могу получить Authorization
Значение заголовка изнутри PHP любым из вышеперечисленных способов. Как я могу получить его значение?
mod_fcgid?
Я не смог определить это точно, но похоже, что Zend Server может использовать FCGI для отправки запросов Apache в PHP (например, переменная PHP_FCGI_MAX_REQUESTS
появляется в $_SERVER
).
Если бы это было правдой, это объяснило бы мою проблему, как mod_fcgid
намеренно отказывается от Authorization
заголовок из приложений, см. http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
Я пытался добавить
FcgidPassHeader Authorization
к моему апачу httpd.conf
, но он просто пожаловался, что:
Invalid command 'FcgidPassHeader', perhaps misspelled or defined by a module not included in the server configuration
mod_fastcgi?
Точно так же, возможно, Zend использует mod_fastcgi
? Основываясь на этой странице http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html, я попытался добавить следующее в мой apache httpd.conf
:
FastCgiConfig -pass-header Authorization
опять же, он просто жаловался, что:
Invalid command 'FastCgiConfig', perhaps misspelled or defined by a module not included in the server configuration
1 ответ
Я обнаружил, что могу обойти это, добавив следующее в конфигурацию apache в Windows:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
Это добавляет HTTP_AUTHORIZATION
ключ к $_SERVER
глобальный, как будто Authorization
заголовок был передан через Apache.