server - the - Apache2: ''AH01630: cliente denegado por la configuración del servidor''
opencart client denied by server configuration (18)
Recibo este error al intentar acceder a localhost a través de un navegador.
AH01630: client denied by server configuration
Revisé los permisos de la carpeta de mi sitio usando:
sudo chmod 777 -R *
Aquí está mi archivo de configuración:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/user-name/www/myproject
<Directory />
Options FollowSymLinks
AllowOverride all
Allow from all
</Directory>
<Location />
Allow from all
Order Deny,Allow
</Location>
<Directory /home/user-name/www/myproject/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride all
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
¿Alguien ha pensado en que el servidor wamp predeterminado no incluya el archivo httpd-vhosts.conf
? Mi enfoque es eliminar la nota de abajo.
conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
en el archivo httpd.conf
Eso es todo.
Además de las directivas Order
y Allow
faltan mencionadas en otras respuestas, tenga en cuenta que una expresión regular no coincidente de una directiva DirectoryMatch
también puede causar este error.
Si la ruta solicitada es /home/user-foo1bar/www/myproject/
el siguiente buscador no coincidirá
<DirectoryMatch "/home/user-[a-z]+/www/myproject/">
...
</DirectoryMatch>
por lo tanto, incluso una configuración de acceso válida podría causar este error.
Al usar Ubuntu compruebe si el módulo CGI está habilitado. Si no:
sudo a2enmod cgi
El problema puede ser que la directiva no está en <Directorio>
https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives
Se puede hacer referencia a la directiva dentro de una sección <Directorio>, <Archivos> o <Ubicación>, así como archivos .htaccess para controlar el acceso a partes particulares del servidor. El acceso se puede controlar según el nombre de host del cliente o la dirección IP.
Esto me estaba volviendo loco. Finalmente descubrí cuál era el problema: estaba usando rutas directas para el registro de errores y estaban equivocadas.
¿Por qué Apache da un mensaje de error vago (y incorrecto)? En su lugar, use un mensaje de error correcto y útil como: Ruta para la directiva ErrorLog "/wrong/path/and/filename.log" no es válido.
De todos modos, para solucionarlo, asegúrese de que las directivas de registro de errores tengan un aspecto similar al siguiente:
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Esto me volvió completamente loco durante un día y medio, pero encontré una solución si todas las demás soluciones se han intentado sin éxito.
Esto es para macOS.
- Ir a la actividad Monitor (búsqueda destacada para: actividad)
- En el monitor de actividad, busque httpd, que es el servicio Apache.
- Seleccione el que pertenece a la raíz y haga clic en X en la parte superior izquierda para cerrarla.
En ese momento, inmediatamente dejé de recibir 403 errores y todo comenzó a funcionar como se esperaba. Lo extraño es que ni siquiera tuve que reiniciar Apache, simplemente funcionó, supongo que se reinició solo cuando fui a mi localhost, honestamente no lo sé, pero creo que el problema es que Apache no se reinicia cuando se usa Apachectl restart, o parar o empezar Espero que esto ayude a alguien.
Hice los mismos cambios que ravisorg sugirió a OSX 10.10 Yosemite que actualizan Apache a la versión 2.4. A continuación se muestran los cambios que se agregaron a http.conf.
<Directory />
AllowOverride none
Require all denied
</Directory>
<Directory /Volumes/Data/Data/USER/Sites/>
AllowOverride none
Require all granted
</Directory>
Me resolví después de pasar un par de horas.
Instalé Apache / 2.4.7 (Ubuntu) a través de coookbook en vagrant vm.
El archivo /etc/apache2/apache2.conf no tiene el elemento <VirtualHost *:80>
de forma predeterminada.
Hice dos cambios para hacerlo.
- añadido
<VirtualHost *:80>
- adicional
Índices de Opciones FollowSymLinks
AllowOverride all
Permitir de todos
entonces finalmente acabo de arrancar vm ..
Para Wamp 3 (Apache 2.4), además de poner el servidor en línea como se describe en las otras respuestas, en el archivo de Hosts virtuales conf/extra/httpd-vhosts.conf
puede que necesite reemplazar
Require local
con
Require all granted
Esto es aplicable si en httpd.conf
tienes
Include conf/extra/httpd-vhosts.conf
Para todos los directorios, escriba Require all granted
lugar de Allow from all
Actualizar
Si lo anterior no funciona, elimine también esta línea a continuación:
Orden permitir, negar
Si está utilizando Apache 2.4
Tienes que marcar las reglas de permiso y denegación.
Echa un vistazo a http://httpd.apache.org/docs/2.4/upgrading.html#access
En 2.2, el control de acceso basado en el nombre de host del cliente, la dirección IP y otras características de las solicitudes de los clientes se realizó mediante las directivas Order, Allow, Deny y Satisfy.
En 2.4, dicho control de acceso se realiza de la misma manera que otras comprobaciones de autorización, utilizando el nuevo módulo mod_authz_host.
La nueva directiva es Require :
2.2 configuracion:
Order allow,deny
Allow from all
2.4 configuración:
Require all granted
Además, no olvide reiniciar el servidor apache después de estos cambios ( # service httpd restart
)
Si sigue el registro de errores y vuelve a cargar la página, debería ver más información sobre el problema exacto.
Toma las variables de entorno para que $ {APACHE_LOG_DIR} realmente funcione ...
source /etc/apache2/envvars
Entonces sigue y mira ...
tail -f ${APACHE_LOG_DIR}/error.log
Si tiene un host https, entonces no olvide realizar Require all granted
cambios Require all granted
para la configuración ssl también.
Además, a veces es útil verificar los permisos como usuario de apache:
# ps -eFH | grep http # get the username used by httpd
...
apache 18837 2692 0 119996 9328 9 10:33 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
# su -s/bin/bash apache # switch to that user
bash-4.2$ whoami
apache
bash-4.2$ cd /home
bash-4.2$ ls
bash-4.2$ cd mysite.com
bash-4.2$ ls
bash-4.2$ cat file-which-does-not-work.txt
Tengo otro que puede ser útil para alguien. Estaba recibiendo el mismo mensaje de error después de actualizar desde PHP 5.6 => 7.0. Habíamos cambiado la configuración de carga de PHP y nos olvidamos de cambiar una vez copiados. Aunque no estaba cargando imágenes en ese momento, Silverstripe (nuestro CMS) se negaba a guardar y lanzaba ese error. Aumentó el tamaño de carga de la imagen y funcionó de inmediato.
Una causa oscura (que acabo de tratar con ella), aunque posible, es una regla interna de mod_rewrite, en el archivo de configuración principal (no .htaccess) que escribe en una ruta que existe en la raíz del sistema de archivos del servidor. Digamos que tienes un directorio /media
en tu sitio, y reescribes algo como esto:
RewriteRule /some_image.png /media/some_other_location.png
Si tiene un directorio /media
en la raíz de su servidor, la reescritura se intentará con eso (lo que resultará en un error de acceso denegado) en lugar de uno en el directorio de su sitio, ya que la raíz del sistema de archivos se verifica primero con mod_rewrite, para la existencia del primer directorio en la ruta, antes del directorio de su sitio.
Verifique que la ruta de DocumentRoot sea correcta. Eso puede causar este error.
en mi caso,
Estoy usando macOS Mojave (Apache / 2.4.34). Hubo un problema en la configuración del host virtual en el archivo /etc/apache2/extra/httpd-vhosts.conf. después de agregar la etiqueta de directorio requerida mi problema desapareció.
Requerir todo otorgado
Espero que la estructura de configuración de host virtual completo te salve.
<VirtualHost *:80>
DocumentRoot "/Users/vagabond/Sites/MainProjectFolderName/public/"
ServerName project.loc
<Directory /Users/vagabond/Sites/MainProjectFolderName/public/>
Require all granted
</Directory>
ErrorLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-error_log"
CustomLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-access_log" common
</VirtualHost>
todo lo que tienes que hacer reemplaza MainProjectFolderName con tu ProjectFolderName exacto.