php-fpm: при загрузке файла отсутствуют некоторые данные POST - PullRequest
0 голосов
/ 16 мая 2018

Я использую PHP 7.2 fpm с nginx на машине с Ubuntu 18.04, и у меня возникла проблема с потерей данных формы.Форма представляет данные примерно в этой структуре:

[
'video' => [
    'translations' => [
        'de' => [
            'title' => 'string',
            'subtitles' => 'upload field'
        ]
    ],
    'posterFrame' => 'upload field'
    'duration' => 'string'
]]

Когда я оставляю поля загрузки пустыми, все данные формы доступны правильно в $_POST.Однако, когда я пытаюсь загрузить файл (размером 10 КБ) в поле posterFrame, он отображается так, как ожидается в $_FILES, но $_POST тогда содержит только те ключи, которые были перечислены до поле загрузки, т.е. в примере, translations доступно в $_POST, но duration отсутствует (я также проверил php://input, который пуст).

Все соответствующие php.ini настройки (max_post_size, allow_file_uploads и т. д.) выглядят хорошо, и сам код приложения также выглядит нормально, по крайней мере, он работает на другом компьютере 18.04 (с Apache / mod_php), так что я в растерянности относительнов чем может быть проблема здесь.Конфигурация nginx vhost является прямой из документации Symfony, а конфигурация php-fpm - это то, что поставляется с Ubuntu.В журналах ошибок, которые я проверял, нет ничего (php-errors, syslog, nginx/error.log и т. Д.).Что могло пойти не так?

РЕДАКТИРОВАТЬ: Есть одна вещь, которую я только что заметил: Когда я публикую форму, я получаю эти строки в nginx/access.log:

[my client ip] - - [16/May/2018:14:56:52 +0000] "POST /backend/videos/edit/1162214/ HTTP/1.1" 500 11373 "http://[myserver]/backend/videos/edit/1162214/" "Mozilla/5.0"
[my client ip] - - [16/May/2018:14:56:52 +0000] "\xFF\xD8\xFF\xE0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xFF\xE1I%Exif\x00\x00II*\x00\x08\x00\x00\x00\x09\x00\x0F\x01\x02\x00\x06\x00\x00\x00z\x00\x00\x00\x10\x01\x02\x00\x0E\x00\x00\x00\x80\x00\x00\x00\x12\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x1A\x01\x05\x00\x01\x00\x00\x00\xA0\x00\x00\x00\x1B\x01\x05\x00\x01\x00\x00\x00\xA8\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00s32\x01\x02\x00\x14\x00\x00\x00\xB0\x00\x00\x00\x13\x02\x03\x00\x01\x00\x00\x00\x02\x003si\x87\x04\x00\x01\x00\x00\x00\xC4\x00\x00\x00X$\x00\x00Canon\x00Canon EOS 20D\x0033\x7F\xFF\xF5\xBB3333\xB7\xF7\xBF;\xB3;33H\x00\x00\x00\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x002018:05:06 18:33:31\x00\x1C\x00\x9A\x82\x05\x00\x01\x00\x00\x00\x1A\x02\x00\x00\x9D\x82\x05\x00\x01\x00\x00\x00\x22\x02\x00\x00\x22\x88\x03\x00\x01\x00\x00\x00\x02\x0073'\x88\x03\x00\x01\x00\x00\x00@\x06\xCC\xCC\x00\x90\x07\x00\x04\x00\x00\x000221\x03\x90\x02\x00\x14\x00\x00\x00*\x02\x00\x00\x04\x90\x02\x00\x14\x00\x00\x00>\x02\x00\x00\x01\x91\x07\x00\x04\x00\x00\x00\x01\x02\x03\x00\x01\x92" 400 182 "-" "-"

Итак, сначалаВзгляд Я бы сказал, что это двоичные данные изображения, которые каким-то образом попадают в URL запроса?Как это может случиться?

1 Ответ

0 голосов
/ 16 мая 2018

хорошо, после преобразования установки в Apache / mod_php я заметил, что расширение GD не было установлено на этой машине (получил Call to undefined method imagecreatefromjepg в журнале).Я установил GD, и теперь он работает правильно.Не знаю, почему php-fpm проглотил ошибку и вызвал такое странное поведение в nginx, хотя

...