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


How to set default permissions for new files created with php

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

你可以在fopen()调用之前立即使用umask(),但是如果你在多线程服务器上,不应该使用umask -它会改变所有线程的掩码(例如,这个改变是在进程级别),而不仅仅是你将要使用fopen()的那个。

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

事后简单地chmod()会更简单,但是:

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

和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