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创建嵌套目录的主要内容,如果未能解决你的问题,请参考以下文章