Итак, у меня есть форма на странице, которая использует enctype = "multipart / form-data", и у меня есть одно поле файла в форме с именем 'upload_file'.Когда я отправляю форму и использую print_r ($ _ FILES), я получаю:
Array
(
[upload_file] => Array
(
[name] => Test-Blank-PDF.pdf
[type] => application/pdf
[tmp_name] => /tmp/phpvr5N3Z
[error] => 0
[size] => 0
)
Вы заметите, что ошибка и размер равны 0. Я использую следующий код для обработки загрузки:
$file = "/tmp/" . $_FILES['upload_file']['name'];
if ($_FILES['upload_file']['error'] === UPLOAD_ERR_OK) {
move_uploaded_file($_FILES['upload_file']['tmp_name'], $file);
}
Я получаю файл ($ file), созданный в /tmp/Test-Blank-PDF.pdf, но это 0 байт (пусто).Если я также попытаюсь сохранить / прочитать значение $ _FILES ['upload_file'] ['tmp_name'] с file_get_contents до завершения скрипта, оно также будет пустым.
Это работает на CentOS 6 с PHP 5.6.Другие формы загружают и обрабатывают файлы нормально, хотя они запускаются через AJAX, но все они все еще используют $ _FILES в качестве серверной части для сохранения.Это единственный, который этого не делает.
Я проверил различные настройки PHP (file_uploads включены и post_max_size, и все они установлены правильно).Моя форма использует POST, а массив $ _FILES печатает данные (например, не пустые).Я проверил журналы ошибок Apache (как SSL, так и обычные) и никаких ошибок ни в одном.Я даже отключил iptables для тестирования, но он все еще не удался.
Есть идеи?Я в недоумении здесь.: /