问题来了
缓存存储在 app/cache 文件夹中。我目前在 dev 环境下工作,我的缓存存储在 app/cache/dev 文件夹中。当我使用 symfony 控制台命令清除缓存时出现问题:
php 应用程序/控制台缓存:清除
当我尝试加载我的项目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
据我了解,此命令为用户 ahmed 设置了对 app/cache 文件夹及其当前和新子文件夹和文件的默认权限。
在我的控制台中,我在 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
最佳答案
Web 服务器组(可能是 www-data
)需要能够写入缓存,您的用户也需要。您的用户 (ahmed) 应该是 www-data 组的成员(请注意,您必须重新登录才能使组成员身份生效)。在 app/cache 和 app/logs 上设置 setgid
位 (+s
) 将确保您的用户在其中创建的文件和目录将维护 www 的组所有权-数据
。取消注释 app_dev.php
中的 umask(0002)
行,这样由 www-data
创建的文件将保持组所有权,确保您的用户有0002 的 umask(在提示符下键入 umask
以查看,或 umask 0002
进行设置,并在登录时通过 google 获取有关设置的帮助)并确保您的权限类似于:
drwxrwsr-x 13 user www-data 4096 2013-05-10 11:05 dev
当您的用户 ahmed 使用 +s
在 ahmed.www-data
拥有的目录中创建文件/目录时,您应该会发现它们也属于 ahmed.www-数据
。
关于linux - Symfony2 缓存重建 - 写权限失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16569893/