PHP创建嵌套目录

Posted

技术标签:

【中文标题】PHP创建嵌套目录【英文标题】:PHP create nested directories 【发布时间】:2011-09-28 15:01:21 【问题描述】:

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

    所需的子目录存在于父目录中,什么都不做。 父目录存在,子目录不存在。仅创建子目录。 父目录和子目录都不存在,先创建父目录,再创建子目录。 如果任何目录没有成功创建,返回 FALSE。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

@Paulocoghi 你是对的。这种行为与 Linux 的 mv 不同,后者只是忽略现有路径 使用 if(!is_dir($path)) mkdir($path, 0777, true); 【参考方案2】:

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
        
    

【讨论】:

【参考方案3】:

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

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

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

那么你剩下的问题就是操纵它来满足要求

【讨论】:

【参考方案4】:

参见mkdir,尤其是$recursive 参数。

【讨论】:

【参考方案5】:

我受了多少苦……得到了这个剧本……

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); 
    elsereturn true;

【讨论】:

这只是没有格式化,还是你认真写这样的代码? @buffalo,如果认真阅读了有关答案的信息(我的评论 got this script 甚至发布日期),这就足够了。此外,你可以只编辑帖子,而不是讽刺,你有足够的代表;)干杯。【参考方案6】:

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

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

https://php.net/function.mkdir

【讨论】:

【参考方案7】:

您正在寻找的功能是 MKDIR。 使用最后一个参数递归地创建目录。还有read the documentation.

【讨论】:

【参考方案8】:

从 PHP 5.0+ 开始,mkdir 有一个递归参数,它会创建任何缺失的父级。

【讨论】:

【参考方案9】:
// 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

【讨论】:

以上是关于PHP创建嵌套目录的主要内容,如果未能解决你的问题,请参考以下文章

PHP脚本遍历目录/文件树并作为嵌套UL输出树[关闭]

如何安全地创建嵌套目录?

如何安全地创建嵌套目录?

如何安全地创建嵌套目录?

如何安全地创建嵌套目录?

如何安全地创建嵌套目录?