Zend Server Windows – 授权标头不传递给PHP脚本

我有一个PHP应用程序需要执行HTTP基本authentication独立于包含Apache服务器。

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

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

mod_fcgid?

我一直无法确定它,但似乎Zend Server可能使用FCGI来分派Apache请求到PHP(例如,variablesPHP_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 

Solutions Collecting From Web of "Zend Server Windows – 授权标头不传递给PHP脚本"

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

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

这将在$_SERVER全局中添加一个HTTP_AUTHORIZATION键,就像Authorization头已经被Apache传递一样。