这是问题所在.
缓存存储在app / cache文件夹中.我目前在dev环境下工作,我的缓存存储在app / cache / dev文件夹中.当我使用symfony控制台命令进行缓存清除时出现问题:
php app / console cache:清除
当我尝试加载我的项目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
解决方法:
Web服务器组(可能是www-data)需要能够写入缓存,您的用户也需要.您的用户(ahmed)应该是www-data组的成员(请注意,您必须重新登录才能使组成员身份生效).在app / cache和app / logs上设置setgid位将确保用户在其中创建的文件和目录将通过www-data维护组所有权.取消注释app_dev.php中的umask(0002)行,以便由www-data创建的文件将保持组所有权,确保您的用户具有0002的umask(在提示时键入umask,或者设置umask 0002,以及google for帮助在登录时设置此项并确保您的权限如下所示:
drwxrwsr-x 13 user www-data 4096 2013-05-10 11:05 dev
当您的用户ahmed在ahmed.www-data with s所拥有的目录中创建文件/目录时,您会发现它们也归ahmed.www-data所有.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!