我在Ubuntu 11.10上安装了Symfony 2.0.7。我有这个问题:
我使用以下命令更改了cache
e logs
目录的权限:
chmod 777 -R cache
chmod 777 -R logs
以及我期待的所有功能。
然后我做了:
app/console cache:clear
使用debug true清除dev环境的缓存
缓存/ dev的权限更改为755,symfony无法写入:
RuntimeException:无法写入缓存文件“/var/www/myapp/app/cache/dev/classes.php”。
在/var/www/myapp/app/bootstrap.php.cache第1079行 在/var/www/myapp/app/bootstrap.php.cache第1017行的ClassCollectionLoader :: writeCacheFile()中 在ClassCollectionLoader :: load()/var/www/myapp/app/bootstrap.php.cache第682行 at Kernel-> loadClassCache()in /var/www/myapp/web/app_dev.php第23行
如何在Symfony 2中解决这个明显的错误?
答案 0 :(得分:52)
请参阅Configuration and Setup部分中的设置权限旁注。将ACL方法与setfacl
一起使用。
e.g。
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用户)
答案 1 :(得分:7)
好吧,我正在使用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
答案 2 :(得分:0)
在我的情况下,我只是以root用户身份执行:
sudo -u apache app/console ca:cl
apache - 这取决于您的网站目录的所有者。假设您正在为Web服务器使用apache,则默认为apache。
答案 3 :(得分:0)
通过查看您的帖子,我到了这个页面
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
它解决了我的问题