Soy bastante nuevo en laravel, de hecho, y estoy tratando de crear mi primer proyecto. por alguna razón sigo recibiendo este error (aún no he empezado a codificar)
Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423
He leído que esto tiene algo que ver con los permisos, pero chmod -R 775 storage
no ayudó en absoluto.
Respuestas:
Nunca establezca un directorio en 777 . Debe cambiar la propiedad del directorio. configure su usuario actual con el que ha iniciado sesión como propietario y el usuario del servidor web (www-data, apache, ...) como grupo. Puedes probar esto:
luego para configurar el permiso de directorio intente esto:
Actualizar:
El usuario y el grupo del servidor web dependen de su servidor web y su sistema operativo. para averiguar cuál es el usuario y el grupo de su servidor web, use los siguientes comandos. para uso nginx:
ps aux|grep nginx|grep -v grep
para uso apache:
ps aux | egrep '(apache|httpd)'
fuente
sudo chown -R {your current user}:www-data storage bootstrap/cache
chown: www-data: illegal group name
. Configurar el directorio a 777 es lo único que funciona_www
probar estosudo chgrp -R _www bootstrap/cache
. sería útil echar un vistazo a esta publicación: stackoverflow.com/a/6419695/2125114Nunca use 777 para directorios en su servidor en vivo, pero en su propia máquina, a veces necesitamos hacer más de 775, porque
Medio
Si su servidor web no se está ejecutando como Vagrant, no podrá escribir en él, por lo que tiene 2 opciones:
o cambie el grupo a su usuario de servidor web, suponiendo que sea
www-data
:fuente
chown -R apache:apache laravelproject
chown -R vagrant:www-data storage
hice por mí, gracias.www-data: illegal group name
Para solucionar este problema, debe cambiar la propiedad del directorio al usuario de Unix que utiliza el servidor web.
Aunque creé el proyecto dentro de la VM utilizando el usuario de VM, la carpeta pertenecía al usuario en la computadora real; entonces, cuando trato de
Ahora funciona.
Gracias a todos los que me ayudaron a resolver esto
EDITAR:
En realidad, todavía no funcionaba, todavía me daba un problema de "permiso denegado".
Esto es lo que hice, modifiqué mi Vagrantfile de esta manera:
fuente
También puede ser SELinux. (Centos, RedHat)
Determinar el estado de SElinux en la terminal:
Si el estado está habilitado, escriba el comando para deshabilitar SElinux
O puedes ejecutar este comando
$ sudo setenforce 0
fuente
Necesita ajustar los permisos de
storage
ybootstrap/cache
.cd
en tu proyecto Laravel.sudo chmod -R 755 storage
sudo chmod -R 755 bootstrap/cache
Puedes probar 777 si 755 no funciona. ¡Sin embargo, el 777 no es seguro!
Dependiendo de cómo esté configurado su servidor web, es posible que pueda ser más específico con sus permisos y solo otorgarlos al usuario de su servidor web. Google
WEB SERVER NAME Laravel file permissions
para más información.Al momento de escribir, esto es para Laravel 5.4
fuente
añadir
composer.json
Después
composer install
fuente
Ejecute los siguientes comandos y puede agregarlos
sudo
al inicio del comando dependiendo de su sistema:fuente
Para todos los usuarios de Centos 7 en un contexto de Laravel, no es necesario deshabilitar Selinux, solo ejecute estos comandos:
Por último, asegúrese de que sus hosts, ips y hosts virtuales estén todos correctamente para acceso remoto.
Selinux está destinado a restringir el acceso incluso a los usuarios root, por lo que solo se puede acceder a las cosas necesarias, al menos en una visión general, es seguridad adicional, deshabilitarlo no es una buena práctica, hay muchos enlaces para aprender Selinux, pero para esto caso ni siquiera es necesario.
fuente
Si usas cmd
Si usas GUI
Primero vaya al proyecto y haga clic derecho en el almacenamiento y verifique las propiedades y vaya a la pestaña Permisos
Cambia los permisos usando el siguiente código
Entonces las propiedades de su archivo pueden ser
Luego verifique su configuración y ejecute el comando laravel, funcionará :)
fuente
En Laravel, debe configurar ACL
storage
y elcache
directorio para que el usuario del servidor web pueda leer / escribir en el directorio. Abra una nueva terminal y ejecute lo siguiente:Referencias
https://symfony.com/doc/3.4/setup/file_permissions.html#using-acl-on-a-system-that-supports-setfacl-linux-bsd
https://linux.die.net/man/1/setfacl
fuente
Puede ser tarde, pero puede ayudar a alguien, cambiar los permisos de directorio funcionó para mí.
Asumiendo que su proyecto Laravel está en el
/var/www/html/
directorio.Luego cambie los permisos de
storage/
ybootstrap/cache/
directorios.fuente
Esta solución es específica para laravel 5.5
Debe cambiar los permisos a algunas carpetas: chmod -R -777 storage / logs chmod -R -777 storage / framework para las carpetas anteriores 775 o 765 no funcionó para mi proyecto
Además, la propiedad de la carpeta del proyecto debe ser la siguiente (usuario actual) :( usuario del servidor web)
fuente
Podrías hacerlo:
fuente
No estaba demasiado interesado en cambiar los permisos de mi carpeta a 777. Así es como solucioné este problema.
Primero, cambié el usuario que ejecuta el servidor web en mi máquina local (ejecuto nginx, pero los principios se aplican en todas partes):
Después, creé otro
index.php
archivo debajo de lapublic/
carpeta para averiguar quién estaba ejecutando mi versión php-fpm y dónde iría para cambiar eso:Al recargar la página, descubrí que
www-data
era el usuario (en la sección de entorno). También descubrí que estaba ejecutando php 7.1. Procedí a cambiar el usuario:Finalmente, otorgué los siguientes permisos a las carpetas:
Ahora, me aseguré de ser el dueño de las carpetas usando un simple:
Si configura el servidor y los usuarios de php-fpm para usted y las carpetas son propiedad de root, por ejemplo, seguirá encontrando este problema. Esto puede suceder si hiciste un
sudo laravel new <project>
como root. En ese caso, asegúrese de usar unchown
comando recursivo en su proyecto para cambiar lauser:group
configuración. En la mayoría de los casos predeterminados,www-data
es la configuración principal para el servidor y php, en ese caso se trata de asegurarse de que la carpeta no esté fuera dewww-data
alcance.Mi proyecto está configurado en mi directorio de inicio. En Ubuntu 16.04 y Laravel 5.5.
fuente
prueba esto
fuente
setenforce
pero en cualquier caso es un error desactivar completamente SELinux solo para solucionar un problema de permiso.En mi caso particular, tuve un archivo de configuración generado y almacenado en caché en el
bootstrap/cache/
directorio, así que mis pasos fueron:rm bootstrap/cache/*.php
Cree un nuevo
laravel.log
archivo y aplique la actualización de los permisos en el archivo usando:chmod -R 775 storage
fuente
(en Ubuntu ): se puede resolver en 2 simples pasos:
Y
fuente
Eliminar
"/var/www/laravel/app/storage/logs/laravel.log"
e intentar nuevamente:rm storage/logs/laravel.log
fuente
Tuve este problema y lo encontré y lo resolvió.
fuente
Este error se puede solucionar deshabilitando Linux.
Comprueba si se ha habilitado
sestatus
Intenta ..
setenforce 0
fuente
Por este error:
Error en el controlador de excepciones: no se pudo abrir la secuencia o el archivo "/var/www/laravel/app/storage/logs/laravel.log": no se pudo abrir la secuencia: Permiso denegado en / var / www / laravel / bootstrap / compiled .php: 8423
usa este comando en la terminal:
fuente
Se solucionó mi problema con este comando en centos 7.6 Server
fuente