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.

Другие вопросы по тегам