Etiqueta: permisos

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

    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.