当我调用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');
用指定的掩码一步递归创建所有目录。