一尘不染

为什么PHP无法创建具有777权限的目录?

php

我正在尝试通过以下命令使用PHP在服务器上创建目录:

mkdir("test", 0777);

但是它不提供完全权限,仅提供以下权限:

rwxr-xr-x

阅读 356

收藏
2020-05-29

共1个答案

一尘不染

该模式是由当前的修改umask,这是022在这种情况下。

umask工作方式是减法。您获得的初始许可权,mkdir然后减去umask以获得 实际 许可权:

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

如果您不希望这种情况发生,则需要将您的umask临时设置为零,以使其无效。您可以使用以下代码段执行此操作:

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

第一行将更改umask为零,同时将前一个存储到中$oldmask。第二行使目录使用所需的权限和(现在不相关)umask。第三行将还原umask为原始状态。

有关umaskmkdir的更多信息,请参见PHP
doco 。

2020-05-29