如何使用具有组写权限的file_put_contents创建文件?

Sea*_*ess 26 php linux nginx

file_put_contents用来创建一个文件.我的php进程在一个具有写入目录权限的组中运行.当file_put_contents被调用,但是,生成的文件不具有组写权限(它创建就好了第一次).这意味着如果我尝试覆盖该文件,则由于缺少权限而失败.

有没有办法用组写权限创建文件?

dan*_*und 31

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

file_put_contents($filename, $data);
chmod($filename, 0664);
Run Code Online (Sandbox Code Playgroud)

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

file_put_contents($filename, $data);
chmod($filename, fileperms($filename) | 16);
Run Code Online (Sandbox Code Playgroud)

示例3(使所有人都可以写入文件而不更改其他权限):

file_put_contents($filename, $data);
chmod($filename, fileperms($filename) | 128 + 16 + 2);
Run Code Online (Sandbox Code Playgroud)

128,16,2分别用于所有者,组和其他人的可写.


Pas*_*TIN 23

您可能尝试umask在调用之前尝试设置file_put_contents:它将更改创建文件时将提供给文件的默认权限.

另一种方式(更好的是,根据文档)是用来chmod在文件创建之后更改权限.


那么,在重新阅读这个问题后,我希望我理解得很好......