对于我的Symfony应用程序,我使用ANT构建了一个部署脚本。在installation manual中,您可以看到需要为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
,但这不是我想要的)。
有任何建议如何处理?
答案 0 :(得分:0)
好的,明白了:
<exec executable="chmod" dir="webroot" failonerror="true">
<arg line="+a '_www allow delete,write,append,file_inherit,directory_inherit' app/cache app/logs" />
</exec>
答案 1 :(得分:0)
我的系统(Debian Wheezy)似乎不支持+a
属性,但这对我有用(docs中的第二个选项):
<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
的反引号。
您可能需要将dir="${basedir}/app"
更改为您自己的应用路径。