我正在使用file_put_contents
来创建文件。我的php进程在一个具有写入目录权限的组中运行。但是,当调用file_put_contents
时,生成的文件没有组写权限(第一次创建就好了)。这意味着如果我尝试覆盖该文件,则由于缺少权限而失败。
有没有办法用组写权限创建文件?
答案 0 :(得分:26)
示例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分别适用于所有者,团体和其他人。
答案 1 :(得分:22)
您可能会在调用file_put_contents
之前尝试设置umask
:尝试更改创建时将为文件提供的默认权限。
另一种方式(更好的是,根据文档)是在创建文件之后使用chmod
来更改权限。
嗯,重读这个问题之后,我希望我能理解它......
答案 2 :(得分:2)
要打开文件并覆盖内容,您需要对文件具有写入权限。了解这种区别非常重要。要覆盖整个文件,您实际上需要对目录的写权限。
如果您想明确说明文件和/或目录,请使用chmod()
设置适当的内容。