2015-03-13 76 views
2

我确定这是一个问题,如果有的话,我可能会问这个问题,但是使用Google搜索并没有给我任何实际的东西。Apache 2.4和php-fpm不会为php页面触发Apache http基本认证

这里是我的情况:

我保护与Apache HTTP基本身份验证的web目录。所以我在根文件夹中有我的.htaccess,并且我的httpd.conf被配置为覆盖所有,以便考虑到.htaccess。我的.htaccess的内容如下:

基础进行AuthType

AuthName指令 “测试”

的AuthUserFile /etc/httpd/.test_pass

需要有效的用户

.test_pass已经成功建立了htpasswd。当通过浏览器或任何HTML文件访问Web根文件夹时,我会正确弹出验证。使用密码给我预期的访问权限。

但是,当我访问一个PHP页面时,弹出的身份验证不会出现,并在PHP页面呈现。

这里是我的设置:

  • Apache的版本:2.4.6
  • PHP-FPM:PHP 5.4.16(FPM-FCGI)与Zend引擎V2.4.0
  • 使用的ProxyPass从proxy_fcgi_module(共享)的通信 的Apache 2.4和PHP-FPM
  • 另外,我不使用套接字连接因为Apache 2.4.6不 支持它
  • 我的ProxyPass S之间etting如下并且工作得很好: ProxyPassMatch^/(。 .PHP(/))$ FCGI://127.0.0.1:9000的/ var/www/html等/ $ 1

我需要能够通过Apache基本设置一个用户名/密码认证auth保护目录中的每个文件,包括php文件。

我正在使用开源软件;因此修改软件代码是最后的手段。

是否有解决方案为php-fpm和mod_proxy_fcgi?

感谢

回答

3

后的研究时间我了解,出现这种情况的原因是因为ProxyPassMatch指令是要处理的第一个指令,这导致Apache忽略其他指令的扩展名为.php。

为了能够通过proxy_fcgi_module通过php-fpm使用其他apache指令,应该使用filesmatch指令而不是proxypassmatch。

的语法如下:

<FilesMatch \.php$> 
SetHandler "proxy:fcgi://127.0.0.1:9000" 
</FilesMatch>