Erro 403 (acesso negado) com o arquivo .htaccess atualizado

1

Estou usando um plug-in para um dos meus sites que atualizei recentemente. Desde que eu atualizei recebo sempre uma mensagem de acesso negado (Erro 403) ao abrir o arquivo magnalister.php do plugin. Quando substituo o novo arquivo .htaccess pelo antigo, não tenho problemas. Aqui está o conteúdo dos arquivos:

Antes de atualizar:

<Files magnalister.php>
    Order Deny,Allow
    Allow from all
</Files>

<Files magnaCallback.php>
    Order Deny,Allow
    Allow from all
</Files>

Após a atualização:

<Files magnalister.php>
    <IfModule !mod_authz_core.c>
        Order Deny,Allow
        Allow from all
    </IfModule>
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
</Files>
<Files magnaCallback.php>
    <IfModule !mod_authz_core.c>
        Order Deny,Allow
        Allow from all
    </IfModule>
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
</Files>

No log de erros do PHP, recebo o seguinte:

[Wed Sep 12 00:25:05 2018] [access_compat:error] [pid 7437] [client ***] [host ***] AH01797: client denied by server configuration: /is/htdocs/***/www/testshop3/plugins/magnalister/magnalister.php

Estou usando o Apache / 2.4.10.

Qual é o motivo do erro 403 com a versão atualizada?

    
por TmCrafz 10.09.2018 / 19:23

1 resposta

0

Onde você está negando acesso? Esse parece ser o problema. Eu suspeito que você ainda está negando o acesso com as diretivas "antigas" do Apache 2.2 em outro lugar na sua configuração do Apache e isso está tomando precedência.

Todas as diretivas que você postou somente permitem acessar, então algo mais em sua configuração está negando acesso a esse arquivo.

Você atualizou seu .htaccess config para trabalhar com módulos mod_authz_core / host do Apache 2.4. No entanto, no Apache 2.4, se outra parte da sua configuração ainda estiver usando as antigas diretivas Deny (parte do mod_access_compact no Apache 2.4 e mod_authz_host no Apache 2.2), então essas diretivas "antigas" terão prioridade sobre o "novo" Apache 2.4 diretivas em .htaccess , apesar da ordem aparente na sua configuração, e o acesso ainda será negado.

Como observado no O Apache é atualizado para 2.4 a partir de 2.2 :

...mixing old and new directives [can] lead to unexpected results. ... Because mod_access_compat directives take precedence over the mod_authz_host ...

Portanto, se você ainda estiver usando as diretivas "antigas" em algum outro lugar da sua configuração (para negar acesso), elas precisam ser atualizadas para usar as diretivas equivalentes do Apache 2.4.

Isto parece ser confirmado pelo erro que você está vendo, que é desencadeado por mod_access_compact, ao contrário de mod_authz_core, como você esperaria no Apache 2.4.

[Wed Sep 12 00:25:05 2018] [access_compat:error] [pid 7437] [client ...] [host ...] AH01797: client denied by server configuration: /is/htdocs/.../www/testshop3/plugins/magnalister/magnalister.php

( Aside: Você diz que está usando o Apache 2.4. Você realmente precisa manter a compatibilidade retroativa com o Apache 2.2, como você está fazendo em .htaccess ? Manter as duas configurações só vai ser mais difícil de manter e mais propenso a erros.)

    
por 12.09.2018 / 17:03