linux - Symfony2 缓存重建 - 写权限失败

标签 linux symfony permissions debian acl

问题来了

缓存存储在 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 使用 +sahmed.www-data 拥有的目录中创建文件/目录时,您应该会发现它们也属于 ahmed.www-数据

关于linux - Symfony2 缓存重建 - 写权限失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16569893/

相关文章:

linux - 如何在@string 后截一行并添加反斜杠

python - 如何为多个守护进程/cron 脚本使用 native Python 日志记录或/和 Twisted 记录器?

linux - awk 将模式从一个文件匹配到另一个文件

php - Symfony - 如何添加未嵌入基础对象的表单字段

php - 在 symfony 中运行进程时出错

Linux 默认文件权限

如果不需要权限,则设置 Android PhoneGap 配置文件

python - 无法加载动态库 'libnvinfer.so.6'

php - 路由前缀如下 Virtual Host

php - 为什么 php-fpm 会忽略为补充组定义的权限?