mkdir()为创建的所有子目录应用chmod 0777

时间:2014-08-06 12:02:29

标签: php file-permissions mkdir

当我调用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);
?>

请看一下。

2 个答案:

答案 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');

这将在一步中以指定的掩码递归地创建所有目录。