Acesso negado apenas para arquivos PHP

3
  • Apache HTTP Server 2.2.21 com VirtualHosts sob SuExec
  • PHP 5.3.8 via fcgid
  • Arch Linux 2011.08.19

Estou recebendo 403 erros de acesso negado do Apache sempre que tento acessar um arquivo PHP. Arquivos HTML e arquivos de texto funcionam bem. Eu joguei com todas as combinações possíveis de permissões nos arquivos PHP que eu posso imaginar, do 644 ao 777. Não muda nada.

Eu também joguei com as permissões no wrapper FCGI e na pasta pai. Com o + x (777, 775, 773, 771), recebo isso no navegador:

Access forbidden!

You don't have permission to access the requested object. It is either read-protected or not readable by the server.

… e isso no log de erros do vhost:

client denied by server configuration: /srv/www/hostname/fcgid-bin/php-fcgid-wrapper

Com o-x (776, 774, 772, 770 ou inferior), recebo isso no navegador:

Forbidden

You don't have permission to access /fcgid-bin/php-fcgid-wrapper/index.php on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

… e isso no log:

(13)Permission denied: access to /fcgid-bin/php-fcgid-wrapper/index.php denied

Isso é realmente incompreensível, já que minha configuração estava funcionando bem até eu começar a entender isso e não sei o que eu poderia ter feito para mudar isso. /usr/bin/php-cgi e o wrapper funcionam bem com os mesmos arquivos de entrada quando chamados diretamente.

Aqui está minha configuração vhost:

<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>
    
por Hugh Guiney 29.10.2011 / 05:07

2 respostas

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

Isso não inclui /srv/www/hostname/fcgid-bin/ ; assumindo que não há Allow aplicando em outro lugar na sua configuração, esse é o problema. Você precisará do Allow de acesso a este local.

    
por 29.10.2011 / 09:32
0

Eu tive um erro semelhante, exceto que o meu foi devido a falta do

Options ExecCGI

linha do diretório onde meus scripts estavam (em uma subpasta do servidor virtual), é por isso que os arquivos html carregaram bem, mas os arquivos php deram 403s.

    
por 22.12.2017 / 03:01