Escenario. Symfony2 corriendo en Ubuntu. Tras limpiar la cache salta un error que tal directorio o archivo de la cache no ha podido ser borrado. Y, al final, nos toca borrarlo a mano o fusilarle un chmod 777.
Solución. Dado que ubuntu no dispone de la opción chmod +a, hay que seguir los siguientes pasos:
1. Borramos todos los ficheros de los directorios con permiso de escritura:
|
$ rm -rf app/cache/* $ rm -rf app/logs/* |
2. Instalamos acl en ubuntu
|
$ sudo apt-get install acl |
3. Añadimos la opción acl en la partición donde tengamos instalado nuestro proyecto. Para ello editamos el archivo /etc/fstab, por ejemplo:
|
... UUID=07aebd28-24e3-cf19-e37d-1af9a23a45d4 /home ext4 defaults,acl 0 2 ... |
4. Si es necesario, volvemos a montar la partición:
|
$ sudo mount -o remount /home |
5. Verificamos que las acl están habilitadas en la partición:
6. Y, por último, desde el directorio root de nuestra aplicación symfony2, lanzamos estos tres comandos para determinar cuál es el usuario del servidor web y asignárselo a APACHEUSER, y, a continuación, establecer los permisos adecuados en app/cache y app/log:
|
$ APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data' | grep -v root | head -1 | cut -d\ -f1` $ sudo setfacl -R -m u:"$APACHEUSER":rwX -m u:`whoami`:rwX app/cache app/logs $ sudo setfacl -dR -m u:"$APACHEUSER":rwX -m u:`whoami`:rwX app/cache app/logs |
Más información en los sitios oficiales de:
Symfony
Ubuntu