Zend Server Windows – заголовок авторизации не передается скрипту PHP

У меня есть приложение PHP, которое должно выполнять проверку подлинности HTTP Basic независимо от содержащего сервер 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

Я попробовал добавить

 FcgidPassHeader Authorization 

к моему apache 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#FastCgiConfig Я попытался добавить следующее к моему apache httpd.conf :

 FastCgiConfig -pass-header Authorization 

опять же, он просто жаловался, что:

 Invalid command 'FastCgiConfig', perhaps misspelled or defined by a module not included in the server configuration 

Я обнаружил, что могу обойти это, добавив следующее в конфигурацию apache в Windows:

 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 

Это добавляет ключ HTTP_AUTHORIZATION к глобальному $_SERVER , точно так же, как если бы заголовок Authorization был передан Apache.