Не удалось записать файл кэша "/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?
Ответы
Ответ 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
И он решил мою проблему