2013-02-21 1 views
26

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

Warning: mkdir() [function.mkdir]: No such file or directory in /home/blah/blah

с кодом:

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

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

+0

Пожалуйста, объясните, что ' "изображения/реклама-изображения/аренду /'.$ insertID."' Означает строка – zerkms

+2

ли родительский каталог теперь, чтобы быть созданным-каталог там? – complex857

+3

Не путайте. Я думаю, что каталог, в котором вы хотите создать каталог, не существует. – Zaffy

ответ

6

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

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

должно быть:

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

Я уверен, что его ошибка вызвана не тем, но отсутствием «images/listing-images/rent» – zerkms

+0

Я думаю, мы узнаем –

+2

Итак, каков ваш окончательный ответ? В коде отсутствует ** синтаксическая ** ошибка. Строка является синтаксически правильной (хотя и бессмысленной).Как вы сказали - это должен быть комментарий :-) – zerkms

80

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

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

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

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

+0

то же самое для вышеупомянутого .. всего на 1 секунду быстрее –

12

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

+0

Единственное, что объясняется в отношении правил PHP 5.0 –

-2

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

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

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

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

+0

«Вы не должны использовать is_dir()» --- какие-либо разъяснения для этого? – zerkms

+0

Собственно игнорируйте первую часть, просто проверите документы is_dir, и она также проверяет наличие, поэтому просто будет, что родительский каталог не существует. – CaffeinatedDave

+0

Следует помнить, что [is_dir] (http://php.net/manual/en/function.is-dir.php) кэширует результаты. См. Примечание на странице php.net. – ficuscr

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