%20con%20el%20archivo%20.htaccess%20actualizado.png)
Estoy usando un complemento para uno de mis sitios web que actualicé recientemente. Desde que actualicé, siempre aparece un mensaje de acceso denegado (Error 403) al abrir magnalister.php del complemento. Cuando reemplazo el nuevo archivo .htaccess por el antiguo no tengo problemas. Aquí está el contenido de los archivos:
Antes de actualizar:
<Files magnalister.php>
Order Deny,Allow
Allow from all
</Files>
<Files magnaCallback.php>
Order Deny,Allow
Allow from all
</Files>
Después de la actualización:
<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>
En el registro de errores de PHP me sale lo siguiente:
[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
Estoy usando Apache/2.4.10.
¿Cuál es el motivo del error 403 con la versión actualizada?
Respuesta1
Dónde estásnegando¿acceso? Ese parece ser el problema. Sospecho que todavía estás negando el acceso con las "antiguas" directivas de Apache 2.2 en otras partes de tu configuración de Apache y esto tiene prioridad.
Todas las directivas que has publicado únicamente.permitiracceso, entoncesalgo másen su configuración está negando el acceso a ese archivo.
Ha actualizado su .htaccess
configuración para que funcione con los módulos mod_authz_core/host de Apache 2.4. Sin embargo, en Apache 2.4, si otra parte de su configuración todavía usa las Deny
directivas antiguas (parte de mod_access_compact en Apache 2.4 y mod_authz_host en Apache 2.2), entonces estas directivas "antiguas" tendrán prioridad sobre las directivas "nuevas" de Apache 2.4 en .htaccess
, a pesar del orden aparente en su configuración, el acceso seguirá siendo denegado.
Como se señala en elDocumentos de Apache en proceso de actualización a 2.4 desde 2.2:
...mezclar directivas antiguas y nuevas [puede] llevar a resultados inesperados. ... Porque las directivas mod_access_compat tienen prioridad sobre mod_authz_host ...
Por lo tanto, si todavía está usando las directivas "antiguas" en otras partes de su configuración (para denegar el acceso), entonces debe actualizarlas para usar las directivas equivalentes de Apache 2.4.
Esto parecería ser confirmado por el error que está viendo, que se activa mediante mod_access_compact, a diferencia de mod_authz_core, como se esperaría en Apache 2.4.
[Miércoles 12 de septiembre 00:25:05 2018] [acceso_compat: error] [pid 7437] [cliente...] [host...] AH01797: cliente denegado por la configuración del servidor: /is/htdocs/.../www/testshop3/plugins/magnalister/magnalister.php
(Aparte:Dices que estás usando Apache 2.4. ¿Realmente necesita mantener la compatibilidad con versiones anteriores de Apache 2.2, como lo está haciendo en .htaccess
? Mantener ambas configuraciones solo será más difícil de mantener y más propenso a errores).