Подтвердить что ты не робот

PHP создает вложенные каталоги

Мне нужна помощь с функцией создания каталога уровня 2 для следующих ситуаций:

  • Желаемый подкаталог существует в родительском каталоге, ничего не делать.
  • Родительский каталог существует, подкаталог не существует. Создайте только подкаталог.
  • Ни родительский каталог, ни подкаталог не существуют, сначала создайте родительский каталог, затем подкаталог.
  • Если какой-либо каталог не был создан успешно, верните FALSE.

Спасибо за помощь.

4b9b3361

Ответ 1

Используйте третий параметр mkdir():

рекурсивный Позволяет создавать вложенные каталоги, указанные в пути. По умолчанию FALSE.

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

Ответ 2

вы можете попробовать использовать file_exists, чтобы проверить, существует ли папка или нет, и is_dir, чтобы проверить, является ли это папкой или нет.

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

И для создания каталога вы можете использовать функцию mkdir

Тогда остальная часть вашего вопроса просто манипулирует этим, чтобы удовлетворить требованиям

Ответ 3

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
        }
    }

Ответ 4

Смотрите mkdir, в частности параметр $recursive.

Ответ 5

Функция, которую вы ищете, это MKDIR. Используйте последний параметр для рекурсивного создания каталогов. И прочитать документацию.

Ответ 6

Начиная с PHP 5.0+ mkdir имеет рекурсивный параметр, который создаст всех отсутствующих родителей.

Ответ 7

// 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 - Руководство

Ответ 8

Сколько я пострадал.. и получил это script..

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;}
}