30

file_put_contents用来创建一个文件。我的 php 进程在一个有权写入目录的组中运行。然而,当file_put_contents被调用时,生成的文件没有组写权限(它第一次创建就好了)。这意味着如果我尝试覆盖文件,它会因为缺少权限而失败。

有没有办法创建具有组写入权限的文件?

4

3 回答 3

37

示例 1(将文件权限设置为所有者和组的读写权限,并为其他人设置读取权限):

file_put_contents($filename, $data);
chmod($filename, 0664);

示例 2(使文件可按组写入而不更改其他权限):

file_put_contents($filename, $data);
chmod($filename, fileperms($filename) | 16);

示例 3(在不更改其他权限的情况下使每个人都可以写入文件):

file_put_contents($filename, $data);
chmod($filename, fileperms($filename) | 128 + 16 + 2);

128、16、2 分别为所有者、组和其他可写。

于 2009-08-06T18:59:04.113 回答
26

您可能会尝试umask在调用之前设置什么file_put_contents:它将更改创建文件时将赋予文件的默认权限。

另一种方法(更好,根据文档)是chmod在创建文件之后使用更改权限。


好吧,在重新阅读问题后,我希望我能很好地理解它......

于 2009-08-06T16:31:57.483 回答
2

要打开文件并覆盖内容,您需要对该文件的写入权限。了解区别很重要。要覆盖整个文件,您实际上需要对该目录的写权限。

chmod()如果您想明确说明文件和/或目录,请使用它来设置适当的内容。

于 2009-08-06T16:28:22.077 回答