PHP move_uploaded_file () FAILS, и я не знаю, почему

это мой код:

$uploaddir = '/temp/'; $uploadfile = $uploaddir.basename($_FILES['file']['name']); if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) send_OK(); else send_error("ERROR - uploading file"); 

Я попытался загрузить с ftp_fput, ftp_put, move_uploaded_file, переименовать, скопировать и все, что я могу положить в руки. ничего не работает.

Я не могу понять, в чем проблема, поскольку move_uploaded_file возвращает только true или false и код ошибки отсутствует.

Помогите??

Вы уверены, что целевой каталог имеет права на запись для world ? Т. Е. Третий номер в представлении разрешения? Файлы, загруженные php, принадлежат и попадают под группу www-data

Вы можете изменить право собственности на

 [sudo] chown -R www-data folder // change owner [sudo] chown -R www-data:www-data folder // change group and owner 

я не знаю, почему

но у тебя есть.
для чего нужны сообщения об ошибках.
вы видите сообщение об ошибке, когда что-то идет не так?
если нет – вам нужно проверить журналы ошибок.

добавьте эту строку вверху вашего кода

 error_reporting(E_ALL); 

и это, если это ваш локальный (не живой) сервер

 ini_set('display_errors',1); 

таким образом, вы сможете отображать ошибки на экране

для загрузки файлов вам нужно $_FILES['file']['error']) проверить $_FILES['file']['error']) . это не 0 , обратитесь к странице руководства для сообщения.

Я столкнулся с аналогичной проблемой при использовании файла move_uploaded_file, который не смог бы загрузить определенные файлы с кодом $ _FILES ['filename'] ['error'] 0.

Оказывается, имя файла должно быть уникальным по отношению к целевому каталогу. move_uploaded_file не знает, как обрабатывать идентичные имена файлов.

Проверяете ли вы размер файла? Одна из причин, по которой может произойти сбой, заключается в том, что вы пытаетесь загрузить файл, превышающий лимит в вашей конфигурации. Посмотрите конфигурацию var "upload_max_filesize" в php.ini и проверьте размер файла.

В дополнение к разрешениям обязательно проверьте наличие свободного места на вашем сервере. Если нет, move_uploaded_file () завершится с ошибкой 0.

Вы пытались активировать error_reporting?

Вы должны проверить свой php-config, если разрешена загрузка файлов.

Это тоже меня поймало. Быть в курсе:

move_uploaded_file () – это безопасный режим и open_basedir. Тем не менее, ограничения размещаются только на пути назначения, чтобы разрешить перемещение загруженных файлов, в которых имя файла может конфликтовать с такими ограничениями. move_uploaded_file () обеспечивает безопасность этой операции, позволяя перемещать только файлы, загруженные через PHP.

Эти настройки могут привести к сбою загрузки, если вы попытаетесь переместить файл за пределы базового каталога вашего веб-сайта, например.