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?
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)
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!
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.
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