Archivos y permisos en Laravel: la forma correcta

Archivos y permisos en Laravel: la forma correcta

/* ---- --- */
Alejandro Robles
Alejandro Robles
Por: Alejandro Robles
Publicado el:

Configura los permisos de tu proyecto Laravel para en Nginx y Apache

Ejecutar tu proyecto Laravel en un servidor de producción Nginx o Apache puede ser frustrante las primeras veces. He enfrentado muchos problemas relacionados con archivos y permisos en Laravel. Errores como “Laravel log could not be opened in append mode”, failed to open stream: Permission denied y cualquier otro problema relacionado con permisos. Aquí te muestro cómo resolver estos problemas de permisos de una vez por todas.
Programador feliz resolviendo problemas

Es importante saber que básicamente hay dos formas de configurar la propiedad y los permisos de archivos y carpetas en tu servidor:
  1. Hacer que tu servidor web sea el propietario de los archivos.
  2. Hacerte a ti mismo el propietario de los archivos.

Hacer que tu servidor web sea el propietario de los archivos

Si tu servidor web es www-data, ejecuta este comando:
sudo chown -R www-data:www-data /var/www/<tu-proyecto>
Nota: Tu servidor web podría usar otro usuario diferente a www-data. Para identificar el usuario y grupo de tu servidor, usa:
# Para nginx
ps aux | grep nginx | grep -v grep

# Para apache
ps aux | egrep '(apache|httpd)'
Con esto, el servidor web será dueño de todos los archivos y también del grupo. Solo el servidor podrá modificar los archivos en tu proyecto, evitando problemas de permisos en logs y bootstrap/cache. Pero tendrás dificultades para subir o editar archivos, ya que estás logueado como tu usuario y no como el servidor web. Puedes solucionarlo agregándote al grupo del servidor:
sudo usermod -a -G www-data ubuntu
Luego establece todos tus directorios a 755 y tus archivos a 644:
sudo find /var/www/<tu-proyecto> -type f -exec chmod 644 {} \;
sudo find /var/www/<tu-proyecto> -type d -exec chmod 755 {} \;

Tu cuenta de usuario como propietario

Personalmente, me asigno la propiedad de todos los directorios y archivos de mi proyecto. Así me resulta más fácil trabajar.
sudo chown -R $USER:www-data /var/www/<tu-proyecto>
Luego vuelvo a establecer directorios en 755 y archivos en 644:
sudo find /var/www/<tu-proyecto> -type f -exec chmod 644 {} \;
sudo find /var/www/<tu-proyecto> -type d -exec chmod 755 {} \;
Luego doy permisos de lectura/escritura al servidor web en storage y bootstrap/cache:
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
Con esto tu sitio funcionará sin problemas de permisos y podrás trabajar con archivos sin inconvenientes.
Nota: Puedes reemplazar /var/www/<tu-proyecto> por . si ejecutas los comandos desde la raíz del proyecto.

¡No dudes en mostrar tu apoyo aplaudiendo y siguiéndome en redes! ❤️
Estamos viviendo una nueva revolución tecnológica. ¡Implementemos juntos soluciones épicas que impulsen tu trabajo, tus clientes o tu negocio! 🚀

Sígueme en mis redes sociales:

Artículos Relacionados

Aplicaciones y servicios
HTTPS para tu aplicación Docker en VPS

HTTPS para tu aplicación Docker en VPS

Aprende paso a paso a exponer tu aplicación Docker en un subdominio con Apache2 y asegurarla con HTTPS gratis y renovación automática.

IA y Prompts Programación y desarrollo
GitHub Copilot vs Tabnine vs Codeium: ¿Qué asistente de código IA elegir en 2025?

GitHub Copilot vs Tabnine vs Codeium: ¿Qué asistente de código IA elegir en 2025?

Comparativa entres asistentes de código IA en 2025. Ventajas, desventajas, seguridad, precios y recomendaciones para potenciar tu productividad en desarrollo de software.