清除缓存时无法写入缓存文件“/var/www/myapp/app/cache/dev/classes.php”

2022-08-30 14:14:23

我已经在Ubuntu 11.10上安装了Symfony 2.0.7。我有这个问题:

我使用以下命令更改了e目录的权限:cachelogs

chmod 777 -R cache
chmod 777 -R logs

以及我所期望的所有功能。

然后我做了:

app/console cache:clear

使用调试 true 清除开发环境的缓存

cache/dev 的权限更改为 755 和 symfony 不能写入:

RuntimeException:无法写入缓存文件“/var/www/myapp/app/cache/dev/classes.php”。

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

我该如何解决Symfony 2中的这个明显的错误?


答案 1

请参阅“配置和设置”部分中的“设置权限”旁注。将 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

(您的 HTTPD 用户在哪里)apache


答案 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

然后,作为普通用户创建两个目录,然后以普通用户身份应用以下命令(不带 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

祝你好运!


推荐