Чаще всего это проблема с разрешениями. Я предполагаю, что у вас нет прямого доступа к оболочке для непосредственного контроля этого материала, поэтому вот как это сделать изнутри скрипта:
Проверьте, существует ли каталог $target
:
$target = '/data/etc....';
if (!is_dir($target)) {
die("Directory $target is not a directory");
}
Проверьте, можно ли его записать:
if (!is_writable($target)) {
die("Directory $target is not writeable");
}
Проверьте, существует ли полное имя файла цели / доступно для записи - возможно, оно существует, но не может быть перезаписано:
$target = $target . basename($_FILES['image']['name']);
if (!is_writeable($target)) {
die("File $target isn't writeable");
}
Помимо этого:
if(!(move_uploaded_file($_FILES['image']['tmp_name'], $target))) {
echo $_FILES['image']['error']."<br />";
}
Повторение параметра error
здесь бесполезно, оно относится исключительно к процессу загрузки. Если файл был загружен правильно, но его нельзя было перенести, это будет по-прежнему вызывать только 0
(например, константу UPLOAD_ERR_OK). Правильный способ проверки ошибок выглядит примерно так:
if ($_FILES['images']['error'] === UPLOAD_ERR_OK) {
// file was properly uploaded
if (!is_uploaded_File(...)) {
die("Something done goofed - not uploaded file");
}
if (!move_uploaded_file(...)) {
echo "Couldn't move file, possible diagnostic information:"
print_r(error_get_last());
die();
}
} else {
die("Upload failed with error {$_FILES['images']['error']}");
}