web-dev-qa-db-fra.com

Échec de l'écriture du fichier de cache "/var/www/myapp/app/cache/dev/classes.php" lors de l'effacement du cache.

J'ai installé Symfony 2.0.7 sur Ubuntu 11.10. J'ai ce problème:

J'ai modifié les autorisations des répertoires cache e logs à l'aide des commandes suivantes: 

chmod 777 -R cache
chmod 777 -R logs

et tout fonctionne comme je m'y attendais.

Puis j'ai fait:

app/console cache:clear

Effacement du cache pour l'environnement dev avec debug true

les permissions de cache/dev passent à 755 et symfony ne peut écrire dans ceci:

RuntimeException: échec de l'écriture du fichier de cache "/var/www/myapp/app/cache/dev/classes.php".

dans /var/www/myapp/app/bootstrap.php.cache, ligne 1079 at ClassCollectionLoader :: writeCacheFile () dans la ligne /17/www/myapp/app/bootstrap.php.cache 1017 at ClassCollectionLoader :: load () dans /var/www/myapp/app/bootstrap.php.cache, ligne 682 at Kernel-> loadClassCache () dans la ligne /var/www/myapp/web/app_dev.php

Comment puis-je résoudre ce bogue apparent dans Symfony 2?

31
Omega

Voir la note Configuration des autorisations dans la section Configuration et installation . Utilisez l'approche ACL avec setfacl.

par exemple.

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

(où Apache est votre utilisateur HTTPD)

52

Eh bien, j'utilise setfacl pour éviter ces problèmes, mais j'ai toujours des problèmes . Je travaille sur un répertoire utilisateur standard donc cela ne fonctionne pas pour moi:

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 vous aussi, faites ceci: (en tant qu'utilisateur privilégié si nécessaire bien sûr)

Sudo rm -rf app/cache app/logs

Ensuite, en tant qu’utilisateur NORMAL, créez les deux répertoires puis appliquez les commandes ci-dessous en tant qu’utilisateur NORMAL (sans 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

Remarque: rappelez-vous qu'il y a deux espaces entre -d\ et -f1

Bonne chance!

7
Federico Gallo

Dans mon cas, je fais juste en tant qu'utilisateur root: 

Sudo -u Apache app/console ca:cl

Apache - cela dépendra du propriétaire de votre répertoire Web. Par défaut, Apache suppose que vous utilisez Apache pour votre serveur Web.

0
Francis Alvin

En regardant vos messages, je suis arrivé à cette page

http://symfony.com/doc/current/setup/file_permissions.html

Puis j'ai fait ceci:

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

Sudo setfacl -R -m u: "$ HTTPDUSER": rwX -m u: whoami: rwX var

Sudo setfacl -dR -m u: "$ HTTPDUSER": rwX -m u: whoami: rwX var

Et ça a résolu mon problème

0
Rel van Keschnir