这是问题所在。
缓存存储在 app / cache 文件夹中。我目前在 dev 环境下工作,我的缓存存储在 app / cache / dev 文件夹中。当我使用symfony控制台命令进行缓存清除时出现问题:
php app / console cache:clear
当我尝试加载项目 localhost / symfony / dev_app.php 时收到错误:
RuntimeException:无法写入缓存文件
我已经安装了 setfacl 扩展名,因为Debian不支持chmod a +,这就是我所做的:
首先,我检查了http请求执行时使用的用户:
ps aux | grep http
ahmed 7219 0.0 0.0 7552 884 pts/0 S+ 19:51 0:00 grep http
然后我通过执行
清除了app / cache文件夹rm -rf app/cache/*
下一步是:
setfacl -R -m d:u:ahmed:rwx,ahmed:rwx app/cache
据我所知,此命令为app / cache文件夹上的用户ahmed及其当前和新的子文件夹和文件设置默认权限。
在我的控制台中,我在 ahmed 用户下工作。
完成所有这些步骤后,我加载了 localhost / symfony / dev_app.php 并创建了缓存。然后
php app/console cache:clear
再一次** ocalhost / symfony / dev_app.php *来创建新的缓存。但我仍然收到此错误
RuntimeException:无法写入缓存文件" /var/www/local/symfony/app/cache/dev/classes.php"。
那么我做错了什么?
以下是 app / cache / dev
的getfacl列表ahmed@ahmed:/var/www/local/symfony$ getfacl app/cache/dev
# file: app/cache/dev
# owner: root
# group: ahmed
# flags: -s-
user::rwx
user:ahmed:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:ahmed:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
答案 0 :(得分:5)
Web服务器组(可能是www-data
)需要能够写入缓存,您的用户也需要。您的用户(ahmed)应该是www-data组的成员(请注意,您必须重新登录才能使组成员身份生效)。在app / cache和app / logs上设置setgid
位(+s
)将确保用户在其中创建的文件和目录将按www-data
维护组所有权。取消注释umask(0002)
中的app_dev.php
行,以便www-data
创建的文件将维护群组所有权,确保您的用户的umask为0002(在提示时键入umask
,或umask 0002
设置,并在登录时设置谷歌获取帮助,并确保您的权限如下所示:
drwxrwsr-x 13 user www-data 4096 2013-05-10 11:05 dev
当您的用户ahmed在ahmed.www-data
拥有+s
的目录中创建文件/目录时,您会发现它们也归ahmed.www-data
所有。