Ответ 1
У вас есть ошибка в вашей строке:
mkdir("images/listing-images/rent/'.$insertID.");
должен быть:
mkdir("images/listing-images/rent/$insertID");
Возможно, что-то очень просто неправильно, но когда я пытаюсь создать каталог (используя переменную вставки, только что выполненную как последнее имя папки), я получаю сообщение об ошибке:
Предупреждение: 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.");
}
конечно, директория не существует. Я пытаюсь сделать это сейчас? запутался!
У вас есть ошибка в вашей строке:
mkdir("images/listing-images/rent/'.$insertID.");
должен быть:
mkdir("images/listing-images/rent/$insertID");
Это происходит потому, что в вашей файловой системе нет пути images/listing-images/rent
.
Если вы хотите создать весь путь - просто передайте третий аргумент как true
:
mkdir('images/listing-images/rent/'.$insertID, 0777, true);
Также есть вероятность, что вы сейчас находитесь в неправильном каталоге. Если это так - вам нужно изменить текущий каталог с помощью chdir()
или указать полный путь.
Предполагая, что вы используете PHP > 5.0.0, попробуйте mkdir("path", 0777, true);
, чтобы включить рекурсивно создавать каталоги (см. здесь http://php.net/manual/en/function.mkdir.php).
$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 } }
в моем случае $ insertID был сгенерирован из некоторых данных в виде строки путем конкатенации
$insertID=$year.$otherId;
Я просто переписал код, подобный этому, и ошибка исчезла:
$insertID=(int)($year.$otherId);
Вероятно, настоящей ошибкой было то, что он забыл лишнюю вершину.
Это:
mkdir("images/listing-images/rent/'.$insertID.");
Внутри:
/'.$insertID."
Правильная версия:
/".$insertID
Расширенная правильная версия:
mkdir("images/listing-images/rent/".$insertID);
Вы не должны использовать is_dir(), чтобы проверить, существует ли что-то, вы также хотите file_exists(). Попробуйте:
if (file_exists("images/listing-images/rent/$insertID") {
mkdir("images/listing-images/rent/$insertID.");
}
Приняли '. потому что это похоже на синтаксическую ошибку, но у вас может быть законная причина, чтобы сохранить ее.
Если mkdir все еще терпит неудачу, возможно, что изображения/листинга-изображения/ренты не существуют, вам придется создавать их отдельно, если это так.