Ошибка move_uploaded_file

Может ли кто-нибудь помочь мне понять, почему это возвращает ложь?

if ((move_uploaded_file($_FILES[$field]['tmp_name'], $path))) { 

Как и в, потенциальные причины. Я проверил, что переменные верны, и я проверил разрешения на папку назначения, которая составляет 777.

Ура!

Для тех, кто хочет видеть var_dump ($ _FILES);

 array(1) { ["image"]=> array(5) { ["name"]=> string(14) "accountile.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(14) "/tmp/php28IQhv" ["error"]=> int(0) ["size"]=> int(394) } } 

Related of "Ошибка move_uploaded_file"

Я проверил переменные

Не проверяйте переменные, но проверяйте сообщения об ошибках.
Это единственное, что вам нужно.
Добавьте эти строки вверху вашего кода.

 ini_set('display_errors',1); error_reporting(E_ALL); 

и посмотреть, что он говорит.
Если файл move_uploaded_file не удался, он всегда будет вызывать ошибку с подробным объяснением .
Вы не поверите, но чтение сообщений об ошибках – это более эффективный способ найти проблему, чем догадки, которые вы пробовали раньше

Не могу поверить, что никто уже не упомянул об этом.

Вы проверяли разрешение на временную папку для загрузки?

Что скажет php, если вы это сделаете:

 var_dump($_FILES); 

С move_uploaded_file вам не нужны 777 разрешений. Каков результат $path ? Вы подтвердили, что существует $path ? Вы подтвердили, что существует $field ?

Либо $ field, либо $ path не существует, или open_basedir – это мое предположение.

open_basedir ли ограничение open_basedir ? Это может помешать отправке загруженного файла. Посмотрите в php.ini для open_basedir , если есть указанный путь, он включен и вы хотите узнать, находится ли путь назначения вашего загруженного файла к этому пути. Если это так, то это не работает.

Обновить

$ path не может быть URL-адресом, он должен быть локальным путем, например /home/user/public_html/

Не использовать

 $path = "http://www.barbadostravelbuddy.co.uk/demo/images/carhire /accountile10420103260403000000pm.png" 

но

 $path = "/home/sites/barbadostravelbuddy.co.uk/public_html/demo/images/carhire/ accountile10420103260403000000pm.png" 

Это должен быть путь в системе, а не URL.

Вы отредактировали ваш php.ini, чтобы убедиться, что upload_tmp_dir указывает на временный каталог?

Loïc Février, спасибо, вы спасли меня много времени!

Вот моя часть … печать возможных ошибок при загрузке.

Сначала создайте каталог Uploader / UploadedFiles Затем используйте код ниже …

 $destination=$_SERVER[DOCUMENT_ROOT]."/Uploader/UploadedFiles/" . $_FILES["file"]["name"]; if(move_uploaded_file($_FILES["file"]["tmp_name"], $destination)){ echo ("Stored in".$_SERVER[DOCUMENT_ROOT]."/Uploader/UploadedFiles/".$_FILES["file"]["name"]); }else{ $html_body = '<h1>File upload error!</h1>'; switch ($_FILES[0]['error']) { case 1: $html_body .= 'The file is bigger than this PHP installation allows'; break; case 2: $html_body .= 'The file is bigger than this form allows'; break; case 3: $html_body .= 'Only part of the file was uploaded'; break; case 4: $html_body .= 'No file was uploaded'; break; default: $html_body .= 'unknown errror'; } echo ($html_body); } 

Основные этапы отладки:

  • Как выглядит print_r($_FILES) ?
  • Существует ли исходный файл?
  • Является ли флаг ошибки «error» для загрузки файла нулевым (будет отображаться при выполнении print_r)
  • Как выглядит целевой $path ?
  • Вы указываете полное имя файла в целевом пути?

Я предполагаю, что $path – это только путь к папке, а не полное имя файла.

Обновление: вам нужно указать путь к файловой системе как $ path.

$path должен быть именем файла, а не каталогом.