如何为使用php创建的新文件设置默认权限

use*_*550 4 php umask

嗨我正在运行一个centos服务器,我想知道如何设置由fopen创建的新创建文件的默认chmod.目前它正在做644但我想要666所以我在哪里可以指定这个设置?

Mar*_*c B 5

您可以umask()在fopen()调用之前立即使用,但如果您在多线程服务器上,则不应使用umask - 它将更改所有线程的掩码(例如,此更改位于进程级别),而不是只是你要使用fopen()的那个.

例如

$old = umask(000);
fopen('foo.txt', 'w'); // creates a 0666 file
umask($old) // restore original mask
Run Code Online (Sandbox Code Playgroud)

事实上简单地chmod()会更容易,但是:

fopen('foo.txt', 'w'); // create a mode 'who cares?' file
chmod('foo.txt', 0666); // set it to 0666
Run Code Online (Sandbox Code Playgroud)


Wes*_*row 2

与 Linux 一样,PHP 有一个 chmod() 命令,可以调用该命令来更改文件权限。

请参阅此处的文档: http: //php.net/manual/en/function.chmod.php

对于默认设置,您可以尝试Patrick Fisher此处所述:设置 Apache 用户的 umask

[root ~]$ echo "umask 000" >> /etc/sysconfig/httpd
[root ~]$ service httpd restart
Run Code Online (Sandbox Code Playgroud)