仅针对PHP文件拒绝访问

  • 具有SuExec下的VirtualHosts的Apache HTTP Server 2.2.21
  • PHP 5.3.8通过fcgid
  • Arch Linux 2011.08.19

任何时候当我尝试访问一个PHP文件时,我都会从Apache获得403访问被拒绝的错误。 HTML文件和文本文件工作正常。 我已经玩过了我能想到的PHP文件(从644到777)的所有可能的权限组合。不会改变任何东西。

我也玩FCGI包装和父文件夹的权限。 用o + x(777,775,773,771),我在浏览器中得到这个:

访问被禁止!

您无权访问请求的对象。 它是读取保护的或不可读的服务器。

…这在虚拟主机错误日志中:

客户端被服务器configuration拒绝:/ srv / www / hostname / fcgid-bin / php-fcgid-wrapper

用牛(776,774,772,770或以下),我在浏览器中得到这个:

被禁止

您无权访问此服务器上的/fcgid-bin/php-fcgid-wrapper/index.php。

此外,尝试使用ErrorDocument处理请求时遇到403禁止错误。

…这在日志中:

(13)权限被拒绝:访问/fcgid-bin/php-fcgid-wrapper/index.php被拒绝

这真是令人难以置信的看到,因为我的设置工作正常,直到我开始得到这个,我不知道我可能会做什么来改变这一点。 /usr/bin/php-cgi和wrapper都可以在直接调用完全相同的input文件时正常工作。

这是我的虚拟主机configuration:

 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/srv/www/hostname/public/" ServerName hostname.com ServerAlias www.hostname.com SuexecUserGroup hostname hostname ErrorLog "/srv/www/hostname/logs/error.log" LogLevel debug CustomLog "/srv/www/hostname/logs/access.log" combined <Directory /srv/www/hostname/public> Order allow,deny Allow from all </Directory> # http://www.linode.com/forums/viewtopic.php?t=2982 <IfModule !mod_php5.c> <IfModule !mod_php5_filter.c> <IfModule !mod_php5_hooks.c> <IfModule mod_actions.c> <IfModule mod_alias.c> <IfModule mod_mime.c> <IfModule mod_fcgid.c> AddHandler php-fcgi .php Action php-fcgi /fcgid-bin/php-fcgid-wrapper Alias /fcgid-bin/ /srv/www/hostname/fcgid-bin/ <Location /fcgid-bin/> SetHandler fcgid-script Options +ExecCGI </Location> ReWriteEngine On ReWriteRule ^/fcgid-bin/[^/]*$ / [PT] </IfModule> </IfModule> </IfModule> </IfModule> </IfModule> </IfModule> </IfModule> </VirtualHost> 

 <Directory /srv/www/hostname/public> Order allow,deny Allow from all </Directory> 

那不包括/srv/www/hostname/fcgid-bin/ ; 假设没有Allow应用到你的configuration中的其他地方,这是问题所在。 你需要Allow访问这个位置。