index - services.json no pudo abrir la secuencia: Permiso denegado en Laravel 4
laravel foreach index (8)
Como dije en mi comentario:
find app/storage -type d -exec chmod 777 {} /;
find app/storage -type f -exec chmod 777 {} /;
Esto modificará todos los directorios y archivos en la app/storage
a 777.
Estaba jugando con una instalación de Laravel 4 en funcionamiento y moví todo a una subcarpeta. Entonces decidí no hacer eso y lo cambié todo (todo a través de la línea de comando):
mv * /folder
y entonces
cd folder
mv * ../
Ahora, el sitio arroja el siguiente error:
file_put_contents(/var/www/quantquote/app/storage/meta/services.json): failed to open stream: Permission denied
Aquí hay una captura de pantalla del error completo:
http://i.imgur.com/8deGG97.png
Ya he intentado establecer permisos en la carpeta / storage en 777 en vano.
Como el problema está relacionado con los permisos, intente volver a otorgar los permisos adecuados a la app/storage
y a todos sus subdirectorios y archivos.
Puede hacerlo desde la ruta raíz de su aplicación Laravel escribiendo:
chmod -Rvc 777 app/storage
Si por alguna razón esto no funciona, intente:
find app/storage -type d -exec chmod -vc 777 {} /;
find app/storage -type f -exec chmod -vc 777 {} /;
Cuando chmod 777 o chmod 775 falla comprueba que los subdirectorios realmente existen:
app/storage/
├── cache
├── logs
├── meta
├── sessions
└── views
en caso de que estas carpetas no existan, debes crearlo:
cd app/storage/
mkdir meta logs cache sessions views
cd ../../
chmod -R 777 app/storage
ACTUALIZACIÓN 2016
En una estructura de aplicación predeterminada de Laravel 5, el storage
está en el mismo nivel que la app
. Entonces el comando anterior se convierte en:
cd storage/
mkdir meta logs cache sessions views
cd ../
chmod -R 777 storage
Nunca ejecute un 777, en modo recursivo. Es un problema de seguridad. Por ahora, elimine el archivo services.json e intente esto:
Pasé un día entero para resolver esto y este comando simplemente resolvió mi problema.
Si sus permisos son 777 para la carpeta Laravel App y todavía obtiene este error, es porque SEliux ha bloqueado. Puedes desbloquear fácilmente la carpeta de tu aplicación usando este comando:
su -c "chcon -R -h -t httpd_sys_script_rw_t /usr/share/nginx/YOUR_LARAVEL_APP/"
¡Eso es!
Por cierto, nunca deshabilite SElinux: http://stopdisablingselinux.com/
Pruebe estos comandos uno por uno:
setenforce 0
setsebool -P httpd_can_network_connect_db on
Si usa CentOS7, siga estos pasos:
Cambiar propiedad de la aplicación / directorio de almacenamiento
chown apache:apache app/storage
Cambiar permisos de aplicaciones / almacenamiento
chmod -R 775 app/storage
Evite que SELinux bloquee el directorio de aplicaciones / almacenamiento
su -c "chcon -R -h -t httpd_sys_script_rw_t [fullpath]/app/storage"
solo escribe esto en la terminal:
php artisan cache:clear