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

时间:2013-07-05 12:13:43

标签: php windows zend-framework apache2

我有一个PHP应用程序需要独立于包含的Apache服务器执行HTTP Basic身份验证。

在linux机器上,通过apt-get php安装了php,我发现Authorization标题没有显示在$_SERVER中,但可以通过apache_request_headers()或{{1 }}

在Windows开发机器上,使用Zend Server 6.1.0 / PHP 5.4,我无法通过上述任何方法从PHP内部获取getallheaders()标头值。我怎样才能获得它的价值?

mod_fcgid?

我无法确定它,但似乎Zend Server可能使用FCGI将Apache请求分派给PHP(例如,变量Authorization出现在PHP_FCGI_MAX_REQUESTS)中。

如果确实如此,它会解释我的问题,因为$_SERVER故意在应用中加载mod_fcgid标题,请参阅http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidpassheader

我尝试添加

Authorization

到我的apache FcgidPassHeader Authorization ,但它抱怨说:

httpd.conf

的mod_fastcgi?

同样,也许Zend正在使用Invalid command 'FcgidPassHeader', perhaps misspelled or defined by a module not included in the server configuration ? 根据此页面http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiConfig,我尝试将以下内容添加到我的apache mod_fastcgi

httpd.conf
再次,它只是抱怨:

FastCgiConfig -pass-header Authorization

1 个答案:

答案 0 :(得分:16)

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

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

这会向HTTP_AUTHORIZATION全局添加$_SERVER密钥,就好像Apache已经传递Authorization标头一样。