PHP создание вложенных каталогов
Мне нужна помощь с функцией для создания каталога уровня 2 для следующих ситуаций:
- нужный подкаталог существует в Родительском каталоге, ничего не делать.
- родительский каталог существует, подкаталог не существует. Создайте только подкаталог.
- ни родительский каталог, ни подкаталог не существует, сначала создайте родительский каталог, затем подкаталог.
- Если какой-либо каталог не был создан успешно, верните ЛОЖНЫЙ.
Спасибо за помощь.
8 ответов
используйте третий параметр mkdir()
:
рекурсивные позволяет создавать вложенные каталоги, указанные в пути. По умолчанию установлено значение FALSE.
$path = '/path/to/folder/with/subdirectory';
mkdir($path, 0777, true);
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
}
}
вы можете попробовать использовать file_exists чтобы проверить, существует ли папка или нет и is_dir
чтобы проверить, является ли это папкой или нет.
if(file_exists($dir) && is_dir($dir))
и для создания каталога, вы можете использовать mkdir
функции
тогда остальная часть вашего вопроса просто манипулирует этим в соответствии с требованиями
функция, которую вы ищете, - MKDIR. Используйте последний параметр для рекурсивного создания каталогов. И читать документацию.
начиная с PHP 5.0+ mkdir имеет рекурсивный параметр, который создаст любые отсутствующие родители.
// 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.
сколько я страдал.. и есть сценарий..
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;}
}