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

Mkdir() говорит, что нет такой директории и не удается?

Возможно, что-то очень просто неправильно, но когда я пытаюсь создать каталог (используя переменную вставки, только что выполненную как последнее имя папки), я получаю сообщение об ошибке:

Предупреждение: mkdir() [function.mkdir]: Нет такого файла или каталога в /home/blah/blah

с кодом:

if (!is_dir("images/listing-images/rent/'.$insertID.")) {
        //make new directory with unique id
   mkdir("images/listing-images/rent/'.$insertID."); 
}

конечно, директория не существует. Я пытаюсь сделать это сейчас? запутался!

4b9b3361

Ответ 1

У вас есть ошибка в вашей строке:

mkdir("images/listing-images/rent/'.$insertID.");

должен быть:

mkdir("images/listing-images/rent/$insertID");

Ответ 2

Это происходит потому, что в вашей файловой системе нет пути images/listing-images/rent.

Если вы хотите создать весь путь - просто передайте третий аргумент как true:

mkdir('images/listing-images/rent/'.$insertID, 0777, true);

Также есть вероятность, что вы сейчас находитесь в неправильном каталоге. Если это так - вам нужно изменить текущий каталог с помощью chdir() или указать полный путь.

Ответ 3

Предполагая, что вы используете PHP > 5.0.0, попробуйте mkdir("path", 0777, true);, чтобы включить рекурсивно создавать каталоги (см. здесь http://php.net/manual/en/function.mkdir.php).

Ответ 4

  • recursive Позволяет создавать вложенные каталоги, указанные в имя пути.
  • но не работал у меня!! для этого вот что я придумал!!
  • и он работает очень прекрасно!!

$upPath = "../uploads/RS/2014/BOI/002";//полный путь
$ tags = explode ('/', $upPath);//взорвать полный путь
$ 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
    }
}

Ответ 5

в моем случае $ insertID был сгенерирован из некоторых данных в виде строки путем конкатенации

$insertID=$year.$otherId;

Я просто переписал код, подобный этому, и ошибка исчезла:

$insertID=(int)($year.$otherId);

Ответ 6

Вероятно, настоящей ошибкой было то, что он забыл лишнюю вершину.

Это:

mkdir("images/listing-images/rent/'.$insertID.");

Внутри:

/'.$insertID."

Правильная версия:

/".$insertID

Расширенная правильная версия:

mkdir("images/listing-images/rent/".$insertID);

Ответ 7

Вы не должны использовать is_dir(), чтобы проверить, существует ли что-то, вы также хотите file_exists(). Попробуйте:

if (file_exists("images/listing-images/rent/$insertID") {
    mkdir("images/listing-images/rent/$insertID.");
}

Приняли '. потому что это похоже на синтаксическую ошибку, но у вас может быть законная причина, чтобы сохранить ее.

Если mkdir все еще терпит неудачу, возможно, что изображения/листинга-изображения/ренты не существуют, вам придется создавать их отдельно, если это так.