PHP创建嵌套目录

时间:2011-07-05 08:39:03

标签: php directory mkdir

我需要一个函数的帮助来为以下情况创建一个2级目录:

  1. 父目录中存在所需的子目录,不执行任何操作。
  2. 父目录存在,子目录不存在。仅创建子目录。
  3. 既不存在父目录,也不存在子目录,首先创建父目录,然后创建子目录。
  4. 如果未成功创建任何目录,则返回FALSE。
  5. 感谢您的帮助。

9 个答案:

答案 0 :(得分:58)

使用mkdir()的第三个参数:

  

recursive 允许创建路径名中指定的嵌套目录。默认为FALSE。

$path = '/path/to/folder/with/subdirectory';
mkdir($path, 0777, true);

答案 1 :(得分:4)

recursive允许创建路径名中指定的嵌套目录。 但对我没用!! 因为这就是我想出来的!它的工作非常完美!

$upPath = "../uploads/RS/2014/BOI/002";   // full path 
$tags = explode('/' ,$upPath);            // explode the full path
$mkDir = "";

    foreach($tags as $folder) {          
        $mkDir = $mkDir . $folder ."/";   // make one directory join one other for the nest directory to make
        echo '"'.$mkDir.'"<br/>';         // this will show the directory created each time
        if(!is_dir($mkDir)) {             // check if directory exist or not
          mkdir($mkDir, 0777);            // if not exist then make the directory
        }
    }

答案 2 :(得分:3)

您可以尝试使用file_exists检查文件夹是否存在,并is_dir检查文件夹是否存在。

 if(file_exists($dir) && is_dir($dir))

要创建目录,您可以使用mkdir函数

然后你的其余问题就是操纵它以满足要求

答案 3 :(得分:2)

请参阅mkdir,特别是$recursive参数。

答案 4 :(得分:1)

我受了多少......并得到了这个剧本..

function recursive_mkdir($dest, $permissions=0755, $create=true){
    if(!is_dir(dirname($dest))){ recursive_mkdir(dirname($dest), $permissions, $create); }  
    elseif(!is_dir($dest)){ mkdir($dest, $permissions, $create); }
    else{return true;}
}

答案 5 :(得分:0)

您正在寻找的功能是MKDIR。 使用last参数递归创建目录。并read the documentation.

答案 6 :(得分:0)

从PHP 5.0 + mkdir开始,它有一个递归参数,可以创建任何缺少的父项。

答案 7 :(得分:0)

// Desired folder structure
$structure = './depth1/depth2/depth3/';

// To create the nested structure, the $recursive parameter 
// to mkdir() must be specified.

if (!mkdir($structure, 0744, true)) {
    die('Failed to create folders...');
}

Returns TRUE on success or FALSE on failure.

PHP: mkdir - Manual

答案 8 :(得分:0)

从PHP 8(2020-11-24)开始,您可以使用命名参数:

<?php
mkdir('March/April', recursive: true);

https://php.net/function.mkdir