tutorial - Error al escribir el archivo de caché "/var/www/myapp/app/cache/dev/classes.php" al borrar el caché
symfony tutorial español pdf (4)
He instalado Symfony 2.0.7 en Ubuntu 11.10. Tengo este problema:
Cambié los permisos de los directorios de logs
cache
e usando los siguientes comandos:
chmod 777 -R cache
chmod 777 -R logs
y todas las funciones como estaba esperando.
Entonces hice:
app/console cache:clear
Borrar la caché para el entorno dev con depuración verdadera
los permisos de caché / dev cambian a 755 y Symfony no puede escribir en eso:
RuntimeException: no se pudo escribir el archivo de caché "/var/www/myapp/app/cache/dev/classes.php".
en /var/www/myapp/app/bootstrap.php.cache línea 1079 en ClassCollectionLoader :: writeCacheFile () en /var/www/myapp/app/bootstrap.php.cache línea 1017 en ClassCollectionLoader :: load () en / var / www / myapp / app / bootstrap.php.cache línea 682 en Kernel-> loadClassCache () en /var/www/myapp/web/app_dev.php línea 23
¿Cómo puedo resolver este aparente error en Symfony 2?
Al mirar tus publicaciones, llegué a esta página
http://symfony.com/doc/current/setup/file_permissions.html
Entonces hice esto:
HTTPDUSER = ps axo user,comm | grep -E ''[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx'' | grep -v root | head -1 | cut -d/ -f1
ps axo user,comm | grep -E ''[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx'' | grep -v root | head -1 | cut -d/ -f1
sudo setfacl -R -mu: "$ HTTPDUSER": rwX -mu: whoami
: rwX var
sudo setfacl -dR -mu: "$ HTTPDUSER": rwX -mu: whoami
: rwX var
Y resolvió mi problema
Bueno, estoy usando setfacl
para evitar esos problemas, pero todavía tengo problemas. Estoy trabajando en un directorio de usuario estándar, así que esto no funciona para mí:
APACHEUSER=`ps aux | grep -E ''[a]pache|[h]ttpd'' | 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
Si usted también, haga esto: (como usuario privilegiado si es necesario, por supuesto)
sudo rm -rf app/cache app/logs
Luego, como usuario NORMAL crea ambos directorios y luego aplica los siguientes comandos como usuario NORMAL también (sin sudo):
exit (from root if necessary)
mkdir app/cache app/logs
APACHEUSER=`ps aux | grep -E ''[a]pache|[h]ttpd'' | grep -v root | head -1 | cut -d/ -f1`
setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
Nota: recuerde que hay dos espacios entre -d/
y -f1
¡Buena suerte!
Consulte la nota al margen de Permisos de configuración en la sección Configuración y configuración . Use el enfoque ACL con setfacl
.
p.ej
sudo setfacl -R -m u:apache:rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:apache:rwX -m u:`whoami`:rwX app/cache app/logs
(donde apache
es su usuario HTTPD)
En mi caso, solo hago como usuario root:
sudo -u apache app/console ca:cl
apache: esto variará según el propietario de su directorio web. se predetermina a apache asumiendo que está utilizando apache para su servidor web.