PHP的mkdir
函数具有以下签名:
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
我想调用此函数将$pathname
和$recursive
设置为true
,但我不想指定$mode
参数。我们控制服务器级别上新文件/目录的权限,因此不希望在我的代码中指定它们。
那么我应该以{{1}}传递什么,以便它被有效地忽略并且不会发生chmod?我还没找到办法。
也许唯一的解决方案是编写一个自定义的$mode
函数来破坏路径并逐个创建目录?
答案 0 :(得分:3)
为什么不将模式设置为默认值0777。
答案 1 :(得分:1)
很抱歉,如果你想给$递归参数,就无法逃避$ mode param。
您可以将模式存储在变量中,并在以后的任何地方使用它 -
$mode = 0777;
mkdir($file_name, $mode, $recursive);
答案 2 :(得分:1)
0777
?
除非我遗漏了某些内容,否则签名会显示三个可选参数。如果未指定,前两个$mode
和$recursive
的默认值分别为0777
和false
。明确指定它不应该改变行为。
答案 3 :(得分:1)
0777
是默认值。如果你没有指定参数,那么将使用0777
,所以任何试图“绕过”指定它都是没有用的。
我认为你根本不会解决这个问题,因为这不是PHP的行为:GNU / Linux的mkdir()
做同样的事情:
参数模式指定要使用的权限。它以通常的方式由进程的umask修改:创建的目录的权限是(mode& ~umask& 0777)。
我不确定这是否是你需要担心的事情。如果是,我认为你能做的最好的事情是检查父目录的权限并应用它。