对于我的Symfony应用程序,我使用ANT构建了一个部署脚本。在安装手册中,您可以看到您需要设置app/cache/
和app/logs
目录的权限。因此,我在命令行上使用以下方法:
sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
使用setfacl
的方法对我(Mac OS)不起作用,使用umask
的第三种方法对我不起作用。
所以我在想如何用ANT做到这一点,并想出了这个:
<chmod perm="+a '_www allow delete,write,append,file_inherit,directory_inherit'">
<fileset dir="app/cache" />
<fileset dir="app/logs" />
</chmod>
问题是它什么都没做。我甚至没有收到错误消息,权限也没有更改。对此有什么建议吗?我不能使用像perm="0775"
或perm="0777"
这样的变通方法,因为那样我就不能再使用ANT删除它了(只使用sudo ant
,但这不是我想要的)。如何处理这个问题有什么建议吗?
好的,明白了:
<exec executable="chmod" dir="webroot" failonerror="true">
<arg line="+a '_www allow delete,write,append,file_inherit,directory_inherit' app/cache app/logs" />
</exec>
我的系统(Debian Wheezy)似乎不支持+a
属性,但这对我有效(文档中的第二个选项):
<exec executable="/bin/sh" dir="${basedir}/app" failonerror="true">
<arg value="-c"/>
<arg value="setfacl -dR -m u:www-data:rwX -m u:`whoami`:rwX cache logs"/>
</exec>
使用sh -c
似乎是必要的,因为如果没有它,我就无法使用whoami
的backticks
您可能需要将dir="${basedir}/app"
更改为自己的应用程序路径。