Symfony2缓存重新创建 - 写入权限失败

时间:2013-05-15 16:03:18

标签: linux symfony permissions debian acl

这是问题所在。

缓存存储在 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

1 个答案:

答案 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所有。