it-swarm.com.de

Cache-Datei "/var/www/myapp/app/cache/dev/classes.php" konnte beim Löschen des Cache nicht geschrieben werden

Ich habe Symfony 2.0.7 auf Ubuntu 11.10 installiert. Ich habe dieses Problem:

Ich habe die Berechtigungen der Verzeichnisse cache und logs mit den folgenden Befehlen geändert: 

chmod 777 -R cache
chmod 777 -R logs

und alle Funktionen wie ich erwartet hatte.

Dann habe ich gemacht:

app/console cache:clear

Leeren Sie den Cache für die dev-Umgebung mit debug true

die Zugriffsrechte für cache/dev ändern sich auf 755 und Symfony kann nicht in das schreiben:

RuntimeException: Fehler beim Schreiben der Cachedatei "/var/www/myapp/app/cache/dev/classes.php".

in /var/www/myapp/app/bootstrap.php.cache Zeile 1079 at ClassCollectionLoader :: writeCacheFile () in /var/www/myapp/app/bootstrap.php.cache Zeile 1017 at ClassCollectionLoader :: load () in /var/www/myapp/app/bootstrap.php.cache Zeile 682 at Kernel-> loadClassCache () in /var/www/myapp/web/app_dev.php Zeile 23

Wie kann ich diesen offensichtlichen Fehler in Symfony 2 beheben?

31
Omega

Siehe die Seite Einrichten von Berechtigungen im Abschnitt Configuration and Setup . Verwenden Sie den ACL-Ansatz mit setfacl.

z.B.

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

(wobei Apache Ihr HTTPD-Benutzer ist)

52

Nun, ich verwende setfacl, um diese Probleme zu vermeiden, aber ich habe immer noch Probleme .Ich arbeite an einem Standard-Benutzerverzeichnis, damit dies für mich nicht funktioniert:

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

Wenn Sie dies auch tun, tun Sie dies: (als Privilegierter Benutzer natürlich)

Sudo rm -rf app/cache app/logs

Dann erstellen Sie als NORMAL-Benutzer beide Verzeichnisse und wenden dann die folgenden Befehle auch als NORMAL-Benutzer an (ohne 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

Hinweis: Denken Sie daran, dass zwischen -d\ und -f1 zwei Leerzeichen stehen.

Viel Glück!

7
Federico Gallo

In meinem Fall mache ich einfach als root-Benutzer: 

Sudo -u Apache app/console ca:cl

Apache - dies hängt vom Besitzer Ihres Webverzeichnisses ab. Die Standardeinstellung für Apache ist die Annahme, dass Sie Apache für Ihren Webserver verwenden.

0
Francis Alvin

Durch das Betrachten Ihrer Beiträge bin ich auf diese Seite gekommen

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

Dann tat ich das:

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

Und es hat mein Problem gelöst

0