Код ошибки загрузки файла php 3

Загрузить более крупный файл (> 10KB) получит error code 3(UPLOAD_ERR_PARTIAL) in $_FILES['file']['error'] и маленький файл (<10KB) будет загружен успешно.

Если файл превышает лимит php post_max_size или upload_max_filesize , он должен получить error code 1 UPLOAD_ERR_INI_SIZE . Однако, неверный error code 3 UPLOAD_ERR_PARTIAL .

Я предполагаю, что у него что-то не так с настройкой apache , и я понятия не имею, как решить эту проблему.

Использование ниже программного обеспечения и его версий

  1. php 5.6.17
  2. apache 2.4.18

Ниже приведен php.ini :

 post_max_size = 8M file_uploads = On upload_tmp_dir = "/tmp" upload_max_filesize = 2M 

и при загрузке более крупного файла (hi.png) журнал ошибок в /var/log/httpd-error.log

 PHP Notice: Missing mime boundary at the end of the data for file hi.png in Unknown on line 0 

здесь index.php

 <!DOCTYPE html> <html> <body> <form action='upload.php' method='post' enctype='multipart/form-data'> Select image to upload: <input type='file' name='fileToUpload' id='fileToUpload'> <input type='submit' value='Upload Image' name='submit'> </form> </body> </html> 

и upload.php

 <?php if($_FILES['fileToUpload']['error'] > 0){ echo "error code".$_FILES['fileToUpload']['error']."<br>"; } else{ echo "file name:".$_FILES['fileToUpload']['name']."<br>"; echo "file type:".$_FILES['fileToUpload']['type']."<br>"; echo "file size:".$_FILES['fileToUpload']['size']."<br>"; echo "file path:".$_FILES['fileToUpload']['tmp_name']."<br>"; move_uploaded_file($_FILES['fileToUpload']['tmp_name'],"uploads/".$_FILES['fileToUpload']['name']); } ?> 

    У меня была та же проблема в тюрьме FreeBSD 10.1 с php 5.6.18 и apache 2.4.18: файлы выше 7950 байт постоянно и последовательно терпят неудачу с ошибкой 3, независимо от того, какие ограничения были установлены.

    После возрастов я, наконец, изолировал проблему: PHP-модуль (mod_php56) был скомпилирован с apache2filter SAPI, но включен как обработчик через AddHandler. Решение состояло в том, чтобы просмотреть параметры порта и перестроить mod_php56 со стандартными параметрами (без AP2FILTER) .

    Длинная история. Проверьте, есть ли у вас опция порта OPTIONS_FILE_SET+=AP2FILTER (Apache 2 Filter SAPI), но PHP настроил обычный способ как обработчик ( AddType application/x-httpd-php .php ). Удаление опции (по умолчанию используется сборка / порт), а восстановление пакета mod_php56 решило проблему для меня.

    Чтобы убедиться, что это ваш случай, вы можете повторить php_sapi_name() . если это apache2filter но php включен с помощью директивы AddHandler , у вас есть та же проблема. После восстановления ваш php_sapi_name () должен быть apache2handler . Оба параметра также можно проверить в phpinfo() , как «Apache 2.0 Filter» и «Apache 2.0 Handler» соответственно.

    Обратите внимание, что это не объясняет, почему это действительно сломало загрузки (или почему модуль работал с конфигурацией Handler в первую очередь). Вы также можете добиться успеха, включив mod_php в качестве фильтра вместо этого в качестве обработчика, но я не проверял это здесь.