我可以将文件写入在 cfscript 中指定文件权限的 linux 目录吗?

sau*_*imo 5 coldfusion file-permissions

我有一个函数将 Coldfusion 查询结果作为文件写入临时目录。它工作正常,并且不必经常运行查询。

但是,我想编写一个 git hook 来删除这些缓存文件,因为当我们推送新代码时,数据可能已经过时,因此应该替换。这些文件是由 apache 用户在 644 模式下创建的。git 用户与 apache 用户在同一组中,因此为了让 git 用户能够删除文件,我想在其中创建它们,或者随后将它们设置为 664 模式。

最初我在使用 objectSave 之后添加了 fileSetAccessMode:

objectSave( data, filepath );
fileSetAccessMode( filepath, '664' )
Run Code Online (Sandbox Code Playgroud)

然而这似乎没有任何效果,所以尝试了

fileWrite( filepath, data, '664' );
Run Code Online (Sandbox Code Playgroud)

这似乎也可以很好地写入文件,但没有设置权限。

我注意到用于 fileWrite的Adobe Docs没有指定模式参数,所以我想这就是为什么它不起作用。总的来说,我更喜欢 cfdocs.org,但我对他们对 cffile 的 cfscript 版本的看法感到困惑,因为哪些函数使用哪些参数并不明显。

经过更多的谷歌搜索,我发现了这个cflib.org cftag 样式函数,我想我可以在 cfscript 中借用和引用它,但我真的不想这样做。

我真正想知道的是,我可以纯粹在 cfscript 中实现这一点,还是脚本和标签之间的 API 功能存在真正的区别?(我很确定在其他情况下也是这种情况)。

非常感谢您的任何投入。

sau*_*imo 4

休息了一下再回来,我发现我可以使用

fileSetAccessMode( file, '664' );
Run Code Online (Sandbox Code Playgroud)

在 cfscript 中,令人尴尬的是我把它放在了代码中的错误位置。但是,仍然需要在之前创建文件后单独执行此操作,因为

fileWrite( file, content );
Run Code Online (Sandbox Code Playgroud)

不支持“模式”参数,如

<cffile action="write" file="file" output="content" mode="664">
Run Code Online (Sandbox Code Playgroud)

在咨询了社区中一些明智的成员后,我已将此作为错误提交给 Adob​​e。

  • 请注意,在 CF11+ 上,您可以在脚本中将任何 CF 标签写入为 cffile( action="write", file="file", output="content", mode="664" ); 这并不是对 fileWrite() 中遗漏的直接答案,但这意味着您至少可以始终利用任何标记的功能,即使在脚本中也是如此。 (3认同)