Не удалось записать файл кэша "/var/www/myapp/app/cache/dev/classes.php" при очистке кэша - PullRequest
32 голосов
/ 09 декабря 2011

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

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

chmod 777 -R cache
chmod 777 -R logs

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

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

app/console cache:clear

Очистка кеша для среды разработки с помощью 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?

Ответы [ 4 ]

52 голосов
/ 09 декабря 2011

См. Настройка разрешений sidenote в разделе Конфигурация и настройка . Используйте подход ACL с setfacl.

, например

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

(где apache - ваш пользователь HTTPD)

7 голосов
/ 02 ноября 2013

Ну, я использую 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

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

Удачи!

0 голосов
/ 08 января 2017

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

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

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

0 голосов
/ 07 марта 2014

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

sudo -u apache app/console ca:cl

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...