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 storageno 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 greppara uso apache:
ps aux | egrep '(apache|httpd)'fuente
sudo chown -R {your current user}:www-data storage bootstrap/cachechown: www-data: illegal group name. Configurar el directorio a 777 es lo único que funciona_wwwprobar 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 laravelprojectchown -R vagrant:www-data storagehice por mí, gracias.www-data: illegal group namePara 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 0fuente
Necesita ajustar los permisos de
storageybootstrap/cache.cden tu proyecto Laravel.sudo chmod -R 755 storagesudo chmod -R 755 bootstrap/cachePuedes 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 permissionspara más información.Al momento de escribir, esto es para Laravel 5.4
fuente
añadir
composer.jsonDespués
composer installfuente
Ejecute los siguientes comandos y puede agregarlos
sudoal 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
storagey elcachedirectorio 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.phparchivo 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-dataera 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 unchowncomando recursivo en su proyecto para cambiar lauser:groupconfiguración. En la mayoría de los casos predeterminados,www-dataes la configuración principal para el servidor y php, en ese caso se trata de asegurarse de que la carpeta no esté fuera dewww-dataalcance.Mi proyecto está configurado en mi directorio de inicio. En Ubuntu 16.04 y Laravel 5.5.
fuente
prueba esto
fuente
setenforcepero 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/*.phpCree un nuevo
laravel.logarchivo y aplique la actualización de los permisos en el archivo usando:chmod -R 775 storagefuente
(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.logfuente
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