2010-10-22 258 views

回答

108

模式通过修改您目前的umask,在这种情况下为022

umask的工作方式是减法。你需要给mkdir初始许可,并减去umask得到实际权限:

0777 
- 0022 
====== 
    0755 = rwxr-xr-x. 

如果你不希望这样的事情发生,你需要设置你的umask暂时为零,以便它有没有影响。你可以用下面的代码片段做到这一点:

$oldmask = umask(0); 
mkdir("test", 0777); 
umask($oldmask); 

第一行改变umask为零,同时存储前面的一成$oldmask。第二行使目录使用所需的权限和(现在不相关)umask。第三行将umask恢复到最初的状态。

有关更多详细信息,请参阅PHP doco的umaskmkdir

2

也许,你umask设置为排除那些

12

文件和目录的创建由umask的设定影响。您可以通过操纵的umask如下创建一组特定权限的文件: -

$old = umask(0); 
mkdir("test", 0777); 
umask($old); 
0

对于那些谁试图

mkdir('path', 777);

,并没有奏效。

这是因为显然,文件模式前面的0非常重要,它告诉chmod将传递的数字解释为八进制数而不是十进制数。

Reference

Ps。这不是问题的解决方案,而只是接受的安装程序的附加组件

0

避免在多线程Web服务器中使用此功能。创建文件后,最好使用chmod()更改文件权限。

实施例:

$dir = "test"; 
$permit = 0777; 

mkdir($dir); 
chmod($dir, $permit); 
相关问题