Mkdir()对所有创建的子目录应用chmod 0777


mkdir() to apply chmod 0777 for all subdirectories created

当我调用mkdir('/tmp/d/e/e/p/p/a/t/h/', 0777, true);时,我需要到目前为止创建的所有子目录都具有指定的chmod: 0777。

最短的路径是什么?我注意到这并没有发生。

root@server [/tmp]# ls -la /tmp/d/e/e/p/p/a/t/h/
total 8
drwxr-xr-x 2 user group 4096 Aug  6 12:59 ./
drwxr-xr-x 3 user group 4096 Aug  6 12:59 ../
代码:

<?php
mkdir('/tmp/d/e/e/p/p/a/t/h', 0777, true);
?>

就像jack sleight在php.net (http://php.net/manual/en/function.mkdir.php#96990)上说的那样

您必须为/tmp/d/e/e/p/p/a/t/h的每个目录运行一个chmod

你可以用foreach循环来做。像这样的代码应该可以工作:

$path = "/tmp/d/e/e/p/p/a/t/h";
$dirs = explode("/", $path);
$cDirs = "";
foreach($dirs as $cDir) {
    $cDirs .= "/".$cDir;
    chmod($cDir, 0777);
}

提示:如果你在linux下,你可以简单地运行:

$path = "/tmp/d/e/e/p/p/a/t/h";
exec("mkdir -R ".$path);
exec("chmod -R 777 ".$path);

我会用一行来完成:

exec('install -d -m 0777 /tmp/d/e/e/p/p/a/t/h');

用指定的掩码一步递归创建所有目录。