1

对于我的 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"or这样的解决方法,perm="0777"因为这样我就不能再用 ANT 删除它了(只能用sudo ant,但这不是我想要的)。有什么建议如何处理吗?

4

2 回答 2

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>
于 2013-07-10T20:26:48.917 回答
0

我的系统(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没有它我就无法使用反引号。

您可能需要更改dir="${basedir}/app"为您自己的应用程序路径。

于 2014-02-25T15:12:52.270 回答