Clásico error de permisos en Laravel dentro de Sail (Docker) — se arregla en segundos.

Qué está pasando

El contenedor corre como usuario sail dentro de /var/www/html, pero los archivos (especialmente .env y storage/) pertenecen a tu usuario local (carlos), entonces PHP no puede escribir logs ni cache.

🩹 Solución rápida (1 comando desde tu host)

Ejecutá esto desde la raíz del proyecto (fuera del contenedor):

sudo chmod -R 777 storage bootstrap/cache

Esto da permisos totales a Laravel para escribir logs, vistas compiladas, etc. Es suficiente para desarrollo.

✅ Solución más correcta (si querés mantener propiedad)

Dentro del contenedor (para que el usuario sail sea dueño):

./vendor/bin/sail bash -lc "chown -R sail:sail storage bootstrap/cache"

Y también asegurate de que el .env sea editable:

./vendor/bin/sail bash -lc "chown sail:sail .env"

🚀 Luego de arreglar permisos

Reiniciá el contenedor o limpia el cache de Laravel:

./vendor/bin/sail artisan optimize:clear

Y listo. Probá de nuevo la app → debería cargar sin el error de laravel.log ni .env.

Operation not permitted

Si sale el error “Operation not permitted” es porque adentro del contenedor el usuario sail no puede cambiar la propiedad de tu carpeta montada (la dueña es tu cuenta de Linux). Arreglalo desde el host, no desde dentro del contenedor.

Haz esto, en la raíz del proyecto:

  1. Pará contenedores (opcional pero prolijo)
./vendor/bin/sail down
  1. Tomá propiedad con tu usuario (en el host)
sudo chown -R "$USER":"$USER" storage bootstrap/cache .env
  1. Permisos seguros para dev
chmod -R ug+rwX storage bootstrap/cache chmod 664 .env
  1. (Recomendado) hacé que Sail use tu UID/GID
    Agregá en tu .env:
WWWUSER=$(id -u) WWWGROUP=$(id -g)

y reconstruí:

./vendor/bin/sail build --no-cache ./vendor/bin/sail up -d
  1. Limpia cachés
./vendor/bin/sail artisan optimize:clear

Listo. Con eso:

  • se va el error de storage/logs/laravel.log (puede escribir),
  • y también el de file_put_contents(.env) (si algo estaba intentando tocarlo).

Notas:

  • El warning de MYSQL_EXTRA_OPTIONS es solo un aviso: si querés silenciarlo podés poner MYSQL_EXTRA_OPTIONS= en tu .env.
  • Si preferís el arreglo “rápido y sucio” en dev: sudo chmod -R 777 storage bootstrap/cache también funciona, pero mejor usar propiedad + ug+rwX.

Si te vuelve a tirar algo luego de esto, pegá el nuevo error exacto y lo destrabamos.


Discover more from Dagorret Notas

Subscribe to get the latest posts sent to your email.

Dejá una respuesta