2

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

我的 Symfony 应用程序可以工作.. 直到我使用命令行清除缓存。当我这样做时,/app/logsandapp/cache/文件夹将归root其所有,并且应用程序无法再写入它。

我可以在每次缓存清除后手动chmod 777/chown nginx:nginx这些文件,但必须有更好的方法吗?

我尝试su nginx;在清除缓存之前使用 bash 函数,但这不起作用。

在缓存清除之前缓存文件夹之前:

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

这是我可以在应用程序中修复的问题,还是有办法设置权限以免它们变成rooted?

编辑:我还应该提到我尝试过:

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

这不会出错,但不能解决问题。

4

2 回答 2

0

sudo -u nginx php 应用程序/控制台缓存:清除

于 2012-11-04T21:18:33.330 回答
0

编辑: 还不能接受这个答案,但这对我有用:所以我按照这里的指南成功地在我的挂载上启用了 ACL:http ://blog.dsyph3r.com/2011/09/symfony2-using-setfacl-for-缓存和.html

对于像这样的新手,我注意到驱动器的标签(有点奇怪)"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*.phps 和app/console脚本。这似乎奏效了,但我不确定其中的含义。

为非 umask 解决方案留下问题。研究在我的坐骑上激活 ACL,但对它来说是新的,这一切似乎......奇怪的名字。

于 2012-11-04T21:18:44.450 回答