Échec de cache en écriture du fichier “/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 changé les permissions de l' cache
e logs
des répertoires en utilisant les commandes suivantes:
chmod 777 -R cache
chmod 777 -R logs
et toutes les fonctions que j'attendais.
Puis j'ai fait:
app/console cache:clear
L'effacement du cache de l'environnement de dev avec debug vrai
autorisations de cache/dev changement à 755 et symfony ne peut écrire que:
RuntimeException: Échec de cache en écriture du fichier "/var/www/myapp/app/cache/dev/classes.php".
dans /var/www/myapp/app/bootstrap.php.ligne de cache 1079
au ClassCollectionLoader::writeCacheFile() dans /var/www/myapp/app/bootstrap.php.ligne de cache 1017
au ClassCollectionLoader::load() dans /var/www/myapp/app/bootstrap.php.ligne de cache 682
au Noyau->loadClassCache() in /var/www/myapp/web/app_dev.php ligne 23
Comment puis-je résoudre cette apparente bug dans Symfony 2?
- J'ai évité ce problème en ajoutant
--no-warmup
lors de l'effacement du cache de sorte que ledev
dossier n'est pas créée par la CLI de l'utilisateur. Puis, la première fois que vous demandez une page dans votre navigateur, ledev
dossier est créé par lewww-data
de l'utilisateur. J'ai fini à l'aide de la solution posté par Federico Gallo, ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Voir le mettre en place les Autorisations passage dans la Configuration et Installation section. Utiliser les ACL approche avec
setfacl
.par exemple
(où
apache
est votre HTTPD utilisateur)setfacl
il ditcommand not found
comment puis-je me débarrasser de luiacl
paquet.Bien, je suis en utilisant
setfacl
pour éviter que les questions mais j'ai encore des problèmes.Je suis en train de travailler sur un répertoire de l'utilisateur si cela ne fonctionne pas pour moi:
Si vous aussi, faites ceci: (comme privilégiés de l'utilisateur si nécessaire bien sûr )
Alors qu'utilisateur NORMAL à la fois créer des répertoires et d'appliquer ensuite les commandes ci-dessous que utilisateur NORMAL aussi (sans sudo):
Remarque: n'oubliez pas qu'il y a deux espaces entre
-d\
et-f1
Bonne chance!
exit
vous devez exécutersudo -k
de laisser des privilèges sudo.exit
aussi fermer la console.Dans mon cas, je viens de le faire en tant qu'utilisateur root:
apache, cela varie selon le propriétaire de votre répertoire web. par défaut, apache en supposant que vous utilisez apache pour le serveur web.
En regardant vos messages, je suis arrivé à cette page
http://symfony.com/doc/current/setup/file_permissions.html
Alors j'ai fait ce:
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 varsudo setfacl -dR-m u:"$HTTPDUSER":rwX -m u:
whoami
:rwX varEt il a résolu mon problème