За последние 24 часа нас посетили 201449 программистов и 2096 роботов. Сейчас ищет 1801 программист ...

Как создать поддиректории на сервере?

Тема в разделе "PHP для новичков", создана пользователем Guliver, 13 июл 2014.

  1. Guliver

    Guliver Новичок

    С нами с:
    26 июн 2013
    Сообщения:
    72
    Симпатии:
    0
    Подскажите как создать поддириктории в определенной папке на сервере?
    Допустим есть папка files в ней предполагается создавать папки с именами полученными переменной
    Код (Text):
    1. $file_directory = substr($_RESULT["md5"], 0, 5);
    Как это сделать?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    В несколько итераций создавай. Разбивай путь на секции и в каждой итерации создавай по одной папке внутри другой.
     
  3. Guliver

    Guliver Новичок

    С нами с:
    26 июн 2013
    Сообщения:
    72
    Симпатии:
    0
    Спасибо. Например вот так?
    Код (Text):
    1.  
    2. $fileDir = "files";   // каталог для хранения файлов
    3. @mkdir($fileDir, 0777);  // создаем, если его еще нет
    4. $file_directory = substr($_RESULT["md5"], 0, 5); // возвращает 5 первых символов, например: abcde
    5. $thumb_dir .= $fileDir . DIRECTORY_SEPARATOR . $file_directory; // определяем путь для папок поддиректорий
    6. @mkdir($thumb_dir, 0777); // создаем саму папку где будет храниться файл
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Не, я имел ввиду что-то, что может в более чем двойную вложенность. Что-то типа этого.
    Код (PHP):
    1. $path = "1/2/3/4/5"; //Наш путь
    2. $array_path = explode('/',$path); //Конвертим его в массив
    3. $work_path = '';//Путь, который будем строить заново, создавая каталоги
    4. foreach($array_path as $sub_path){ //Для каждого пункта из массива
    5.     $work_path.=$sub_path.DIRECTORY_SEPARATOR;    //создаем фрагмент пути типа предыдущий элемент/текущий элемент/
    6.     mkdir($work_path, 0777);// создаем каталог по вышесобранному пути
    7. }
    //в итоге весь путь будет обращен в реальные каталоги.
    По логике примерно так. Не факт, что сам пример рабочий, правда, написан за минуту тут же, в браузере. Но суть должна быть ясна.

    З.Ы. @ не используй вовсе, либо используй крайне аккуратно. Если у тебя какой-то фрагмент логики завязан на том, что папка должна быть создана, ты каскад ошибок словишь в итоге, не обрабатывая как положено проблему, которая помешала созданию папки, но была замята собакой.