Impossible d'écrire le fichier 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 permissions des répertoires cache e logs en utilisant les commandes suivantes:

chmod 777 -R cache
chmod 777 -R logs

Et toutes les fonctions que je m'attendais.

Puis j'ai fait:

app/console cache:clear

Effacement du cache pour l'environnement dev avec debug true

Les autorisations de cache / dev passent à 755 et symfony ne peut pas écrire cela:

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

Dans /var/www/myapp/app/bootstrap.php.cache ligne 1079 dans ClassCollectionLoader:: writeCacheFile () dans / var / www/myapp/app / bootstrap.php.cache ligne 1017 à ClassCollectionLoader:: load () dans / var / www/myapp/app / bootstrap.php.cache ligne 682 dans le noyau - > loadClassCache () dans / var / www / myapp / web / app_dev.php ligne 23

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

31
demandé sur nbro 2011-12-09 21:26:23

4 réponses

Voir la note latéraleConfiguration des autorisations dans la sectionConfiguration et Configuration . 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
répondu Elnur Abdurrakhimov 2014-11-28 13:57:10

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

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

Bonne chance!

7
répondu Federico Gallo 2014-08-29 05:22:48

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

sudo -u apache app/console ca:cl

Apache-cela varie en fonction du propriétaire de votre répertoire web. par défaut à apache en supposant que vous utilisez apache pour votre serveur web.

0
répondu Francis Alvin 2014-03-07 07:46:28

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

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

Ensuite, 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 il a résolu mon problème

0
répondu Rel van Keschnir 2017-01-07 21:21:35