Подтвердить что ты не робот

Не удалось записать файл кэша "/var/www/myapp/app/cache/dev/classes.php" при очистке кеша

Я установил Symfony 2.0.7 на Ubuntu 11.10. У меня есть эта проблема:

Я изменил права доступа к каталогам cache e logs, используя следующие команды:

chmod 777 -R cache
chmod 777 -R logs

и все функции, которые я ожидал.

Затем я сделал:

app/console cache:clear

Очистка кэша для среды dev с помощью функции debug true

разрешения кэша /dev изменяются на 755, а symfony не может писать в этом:

RuntimeException: Не удалось записать файл кэша "/var/www/myapp/app/cache/dev/classes.php".

в строке /var/www/myapp/app/bootstrap.php.cache 1079 в ClassCollectionLoader:: writeCacheFile() в /var/www/myapp/app/bootstrap.php.cache строке 1017 в ClassCollectionLoader:: load() в строке /var/www/myapp/app/bootstrap.php.cache 682 в Kernel- > loadClassCache() в строке /var/www/myapp/web/app _dev.php 23

Как я могу решить эту очевидную ошибку в Symfony 2?

4b9b3361

Ответ 1

См. раздел "Настройка разрешений" в разделе

Ответ 2

Ну, я использую setfacl, чтобы избежать этих проблем, но у меня все еще есть проблемы. Я работаю над стандартным каталогом пользователей, поэтому это не работает для меня:

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

Если вы тоже это сделаете: (в качестве привилегированного пользователя, если необходимо, конечно)

sudo rm -rf app/cache app/logs

Затем, когда пользователь NORMAL создает оба каталога, а затем применяйте команды ниже как пользователь NORMAL (без 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

Примечание: помните, что между -d\ и -f1

есть два пробела:

Удачи!

Ответ 3

В моем случае я просто выполняю роль пользователя root:

sudo -u apache app/console ca:cl

apache - это будет зависеть от владельца вашего веб-каталога. по умолчанию используется apache, предполагая, что вы используете apache для своего веб-сервера.

Ответ 4

Посмотрев ваши сообщения, я попал на эту страницу

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

Тогда я сделал это:

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

И он решил мою проблему