php-fpm:上传文件时缺少一些POST数据

时间:2018-05-16 09:49:37

标签: php nginx fpm

我在Ubuntu 18.04机器上使用PHP 7.2 fpm与nginx,我遇到了表单数据丢失的问题。表单大致以此结构提交数据:

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

当我将上传字段留空时,$_POST中的整个表单数据都可以正常使用。但是,当我尝试在posterFrame字段中上传文件(大小为10 kB)时,它会在$_FILES中按预期显示,但$_POST只包含列出的键之前上传字段,即在示例中translations$_POST可用duration,但php://input丢失了(我还检查了php.ini,是空的。

所有相关的max_post_size设置(allow_file_uploadsnginx等)看起来很好,应用程序代码本身也似乎没问题,至少它适用于不同的18.04机器(带有Apache / mod_php),所以我不知道这里可能出现什么问题。 php-fpm vhost配置直接来自Symfony文档,php-errors配置是Ubuntu附带的配置。我检查过的任何错误日志中都没有任何内容(syslognginx/error.lognginx/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 "-" "-" 中得到这些行:

"query": {
    "bool": {
      "must": [
        {
          "match": {
            "appName": "CreditDecisionServiceAPI"
          }
        },
        {
          "match": {
            "level": "ERROR"
          }
        },
        {
          "range": {
            "@timestamp": {
              "gte": "now-1d"
            }
          }
        }
      ]
    }
}

所以乍一看我会说这是图像的二进制数据,它以某种方式在请求URL中结束?怎么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

好的,在将设置转换为Apache / mod_php之后,我注意到这台机器上没有安装GD扩展(在日志中得到Call to undefined method imagecreatefromjepg)。我安装了GD,现在它正常工作。不知道为什么php-fpm吞噬了错误并在nginx中产生了如此奇怪的行为