Amazon Linux AMI上Symfony2中的缓存/日志权限

时间:2012-11-04 20:43:58

标签: linux caching symfony permissions amazon-web-services

我在AWS Linux AMI(一个免费的层微实例)上设置了Symfony2,并成功设置了PHP-FPM和nginx。

我的Symfony应用程序工作..直到我使用命令行清除缓存。执行此操作时,/app/logsapp/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

哪个没有错误,但不能解决问题。

2 个答案:

答案 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*.phpapp/console脚本。这似乎有效,但我不确定其含义。

对非umask解决方案持开放态度。我希望在我的mount上激活ACL,但是对它来说是新的,这一切似乎都奇怪地命名了。