В массиве файлов PHP есть данные, но их размер и ошибка равны 0 - PullRequest
0 голосов
/ 24 сентября 2018

Итак, у меня есть форма на странице, которая использует 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 для тестирования, но он все еще не удался.

Есть идеи?Я в недоумении здесь.: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...