为什么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被设置为排除这些