为什么PHP不能创build一个拥有777权限的目录?

我试图创build一个目录在我的服务器上使用PHP的命令:

mkdir("test", 0777); 

但它没有给予完全的权限,只有这些:

 rwxr-xr-x 

该模式由您当前的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的umask和mkdir 。

文件和目录的创build受到umask设置的影响。 您可以通过如下操作umask来创build具有特定权限集的文件: –

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

可能你的umask被设置为排除这些