Zend Server Windows - 授权标头未传递给PHP脚本

Ric*_*ich 3 php windows zend-framework apache2

我有一个PHP应用程序,需要独立于包含Apache服务器执行HTTP基本身份验证.

在Linux机器上,通过安装php apt-get php,我发现Authorization标题没有出现$_SERVER,但可以通过apache_request_headers()getallheaders().

在使用Zend Server 6.1.0/PHP 5.4的Windows开发机器上,我无法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
Run Code Online (Sandbox Code Playgroud)

对我的阿帕奇httpd.conf,但它只是抱怨:

Invalid command 'FcgidPassHeader', perhaps misspelled or defined by a module not included in the server configuration
Run Code Online (Sandbox Code Playgroud)

的mod_fastcgi?

同样,也许Zend正在使用mod_fastcgi?基于此页面http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiConfig我尝试将以下内容添加到我的apache httpd.conf:

FastCgiConfig -pass-header Authorization
Run Code Online (Sandbox Code Playgroud)

再次,它只是抱怨说:

Invalid command 'FastCgiConfig', perhaps misspelled or defined by a module not included in the server configuration
Run Code Online (Sandbox Code Playgroud)

Ric*_*ich 17

我发现我可以通过在Windows上的apache配置中添加以下内容来解决这个问题:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
Run Code Online (Sandbox Code Playgroud)

HTTP_AUTHORIZATION$_SERVER全局添加了一个键,就像AuthorizationApache已经传递了标题一样.