当我调用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);
?>
请看一下。
答案 0 :(得分:3)
就像杰克斯莱特在php.net(http://php.net/manual/en/function.mkdir.php#96990)
上说的那样您必须为chmod
的每个目录运行/tmp/d/e/e/p/p/a/t/h
。
你可以这样做,即使用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);
答案 1 :(得分:1)
我只用一行:
exec('install -d -m 0777 /tmp/d/e/e/p/p/a/t/h');
这将在一步中以指定的掩码递归地创建所有目录。