attribute - title tag html
Apache dando 403 errores prohibidos. (5)
Acabo de solucionar este problema después de luchar durante unos días. Esto es lo que funcionó para mí:
Primero, revise su archivo de error_log
Apache y vea el mensaje de error más reciente.
Si dice algo como:
access to /mySite denied (filesystem path ''/Users/myusername/Sites/mySite'') because search permissions are missing on a component of the path
entonces hay un problema con sus permisos de archivo. Puede corregirlos ejecutando estos comandos desde el terminal:
$ cd /Users/myusername/Sites/mySite $ find . -type f -exec chmod 644 {} /; $ find . -type d -exec chmod 755 {} /;
Luego, actualice la URL donde debería estar su sitio web (como
http://localhost/mySite
). Si aún recibe un error 403, y si Apacheerror_log
aún dice lo mismo, suba progresivamente su árbol de directorios, ajustando los permisos del directorio a medida que avanza. Puedes hacerlo desde la terminal:$ cd .. $ chmod 755 mySite
Si es necesario, continúa con:
$ cd .. $ chmod Sites
y, si es necesario,
$ cd .. $ chmod myusername
NO ir más lejos que eso. Podrías realmente arruinar tu sistema. Si aún recibe el error que dice que
search permissions are missing on a component of the path
, no sé qué debe hacer. Sin embargo, encontré un error diferente (el de abajo) que solucioné de la siguiente manera:Si su
error_log
dice algo como:client denied by server configuration: /Users/myusername/Sites/mySite
entonces su problema no es con sus permisos de archivo, sino con su configuración de Apache.
Observe que en su archivo
httpd.conf
, verá una configuración predeterminada como esta (Apache 2.4+):<Directory /> AllowOverride none Require all denied </Directory>
o como este (Apache 2.2):
<Directory /> Order deny,allow Deny from all </Directory>
¡NO cambies esto! No anularemos estos permisos globalmente, sino en su archivo
httpd-vhosts.conf
. Sin embargo, primero asegúrese de que la línea deInclude
dehttpd.conf
enhttpd.conf
tenga comentarios . Debe tener un aspecto como este. (Su ruta exacta puede ser diferente.)# Virtual hosts Include etc/extra/httpd-vhosts.conf
Ahora, abra el archivo
httpd-vhosts.conf
que acaba deInclude
d. Agregue una entrada para su página web si aún no tiene una. Debería verse algo como esto. Las rutas deDocumentRoot
y delDirectory
deben ser idénticas y deben apuntar a donde esté ubicado su archivoindex.html
oindex.php
. Para mí, eso está dentro del subdirectoriopublic
.Para Apache 2.2:
<VirtualHost *:80> # ServerAdmin [email protected] DocumentRoot "/Users/myusername/Sites/mySite/public" ServerName mysite # ErrorLog "logs/dummy-host2.example.com-error_log" # CustomLog "logs/dummy-host2.example.com-access_log" common <Directory "/Users/myusername/Sites/mySite/public"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost>
Las lineas diciendo
AllowOverride All Require all granted
Son críticos para Apache 2.4+. Sin estos, no anulará la configuración predeterminada de Apache especificada en
httpd.conf
. Tenga en cuenta que si está utilizando Apache 2.2, estas líneas deberían decirOrder allow,deny Allow from all
Este cambio ha sido una fuente importante de confusión para los usuarios de Google de este problema, como I, porque copiar y pegar estas líneas de Apache 2.2 no funcionará en Apache 2.4+, y las líneas de Apache 2.2 todavía se encuentran comúnmente en los hilos de ayuda más antiguos.
Una vez que haya guardado los cambios, reinicie Apache . El comando para esto dependerá de su sistema operativo e instalación, por lo tanto, búsquelo por separado si necesita ayuda con él.
¡Espero que esto ayude a alguien más!
PD: Si tiene problemas para encontrar estos archivos .conf
, intente ejecutar el comando de find
, como:
$ find / -name httpd.conf
Ok, entonces he configurado dos hosts virtuales y están funcionando bien. ambos albergan proyectos web simples y funcionan bien con http://project1
y http://project2
en el navegador.
De todos modos, he venido a añadir otro vhost. Edité el archivo / etc / hosts con 127.0.0.1 project3 y también actualicé el archivo httpd-vhosts.conf copiando y pegando las entradas anteriores para project2 y editando la ruta del archivo.
He comprobado todos los permisos de archivos y carpetas (de hecho, copié y pegué de project2) y simplemente puse un mensaje de "hola mundo" en el archivo index.php.
Cuando accedo a http://project3
¿Por qué es esto? Simplemente puedo averiguar qué paso he omitido, ya que todo parece estar configurado correctamente.
Gracias por adelantado.
El servidor puede necesitar permiso de lectura para su directorio de inicio y .htaccess en el mismo
Mira esto :
- Apache puede acceder físicamente al archivo (el usuario que ejecuta apache, probablemente www-data o apache, puede acceder al archivo en el sistema de archivos)
- Apache puede listar el contenido de la carpeta (permiso de lectura)
- Apache tiene una directiva "Permitir" para esa carpeta. Debe haber uno para / var / www /, puede verificar vhost por defecto, por ejemplo.
Además, puede ver el archivo error.log (que generalmente se encuentra en /var/log/apache2/error.log) que describe por qué recibió el error 403 exactamente.
Finalmente, es posible que desee reiniciar Apache, solo para asegurarse de que se aplica toda la configuración. Esto se puede hacer generalmente con /etc/init.d/apache2 restart
. En algún sistema, el script se llamará httpd. Sólo averigua.
Puede intentar deshabilitar selinux e intentarlo una vez más usando el siguiente comando
setenforce 0
restorecon
funciona de la siguiente manera:
restorecon -v -R /var/www/html/