2

PHP 的mkdir函数具有以下签名:

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

我想调用这个函数,指定$pathnameand$recursive设置为true,但我不想指定$mode参数。我们在服务器级别控制新文件/目录的权限,因此不希望在我的代码中指定它们。

那么我应该通过什么才能$mode有效地忽略它并且不会发生 chmod-ing 呢?我还没有找到方法。

也许唯一的解决方案是编写一个自定义mkdir函数来打破路径并一个一个地创建目录?

4

4 回答 4

3

为什么不将模式设置为默认值 0777。

于 2010-07-22T09:28:02.337 回答
1

抱歉,如果您想提供 $recursive 参数,则无法转义 $mode 参数。

您可以将模式存储在变量中并在以后的任何地方使用它 -

$mode = 0777;

mkdir($file_name, $mode, $recursive);
于 2010-07-22T09:29:29.403 回答
1

0777?

除非我遗漏了什么,否则签名会显示三个可选参数。前两个$mode$recursive分别具有默认值0777false,当未指定时。明确指定它不应该改变行为。

于 2010-07-22T09:33:53.840 回答
1

0777是默认值。如果您不指定参数,0777将使用,因此任何试图“绕过”指定它的尝试都是没有实际意义的。

我认为你根本不会解决这个问题,因为这不是 PHP 的行为:GNU/Linuxmkdir()做同样的事情:

参数mode指定要使用的权限。它由进程的umask以通常的方式修改:创建目录的权限为(mode & ~umask & 0777)。

我不确定这是否是您需要担心的事情。如果是,我认为您能做的最好的事情就是检查父目录的权限并应用它。

于 2010-07-22T09:34:15.587 回答