我在AWS Linux AMI(一个免费的层微实例)上设置了Symfony2,并成功设置了PHP-FPM和nginx。
我的Symfony应用程序工作..直到我使用命令行清除缓存。执行此操作时,/app/logs
和app/cache/
文件夹归root
所有,应用程序无法再写入该文件夹。
我可以在每次缓存清除后手动chmod 777
/ chown nginx:nginx
这些文件,但必须有更好的方法吗?
我在尝试清除缓存之前尝试使用bash函数su nginx;
,但这不起作用。
缓存清除之前缓存文件夹之前:
drwxrwxrwx 11 nginx nginx 4096 Nov 4 13:23 dev
drwxrwxrwx 10 nginx nginx 4096 Nov 4 20:39 prod
之后:
drwxrwxrwx 11 nginx nginx 4096 Nov 4 13:23 dev
drwxr-xr-x 10 root root 4096 Nov 4 20:39 prod
这是我可以在应用中修复的内容,还是设置权限以便它们不会被root
修改?
编辑:我还应该提一下我试过:
sudo chmod +a "nginx allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
但服务器无法识别+a
。
还尝试使用:
setfacl -R -m u:nginx:rwx app/cache app/logs
哪个没有错误,但不能解决问题。
答案 0 :(得分:0)
sudo -u nginx php app / console cache:clear
答案 1 :(得分:0)
修改强> 不能接受这个答案,但这对我有用: 所以我按照指南http://blog.dsyph3r.com/2011/09/symfony2-using-setfacl-for-cache-and.html
在我的坐骑上成功启用了ACL对于新手来说,我注意到"Label=/"
中驱动器的标签(有点奇怪)fstab
。
一旦完成,我就用了
setfacl -R -m u:nginx:rwx app/cache app/logs
setfacl -dR -m u:nginx:rwx app/cache app/logs
现在我可以随意清除缓存了。
原创(仅在您不能或不会启用ACL时使用):
我按照帮助页面让我在许多地方设置umask(0000);
,即app/app*.php
和app/console
脚本。这似乎有效,但我不确定其含义。
对非umask解决方案持开放态度。我希望在我的mount上激活ACL,但是对它来说是新的,这一切似乎都奇怪地命名了。