我已经在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这是我可以在应用程序中修复的问题,还是有办法设置权限,使它们不会变成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这不会出错,但不会修复问题。
发布于 2012-11-05 05:18:44
ACL编辑:还不能接受这个答案,但这对我很有效:所以我成功地按照这里的指导启用了:http://blog.dsyph3r.com/2011/09/symfony2-using-setfacl-for-cache-and.html
对于像这样的新手,我注意到这个驱动器的标签是(有点奇怪的) fstab中的"Label=/"。
一旦完成,我就使用
setfacl -R -m u:nginx:rwx app/cache app/logs
setfacl -dR -m u:nginx:rwx app/cache app/logs现在我似乎可以随意清除缓存了。
Original (仅当您不能或不打算启用ACL时才使用):我遵循了一个帮助页面,让我在许多地方设置了umask(0000);,即app/app*.phps和app/console脚本。这似乎起到了作用,但我不确定其中的含义。
将问题留给非umask解决方案。正在考虑在我的挂载上激活ACL,但这对我来说是新的,这一切似乎..名字很奇怪。
发布于 2012-11-05 05:18:33
sudo -u nginx php应用/控制台缓存:清除
https://stackoverflow.com/questions/13222702
复制相似问题