2

我有一个使用 Guzzle 发出 HTTP 请求的 PHP 应用程序。

我收到以下异常:

[curl] 56: Problem (2) in the Chunked-Encoded data [url] http://...

看起来问题出在cURL上。我试图从源代码编译最新版本的 cURL,但它看起来没有帮助。

可能是什么问题,我该如何解决?


$ curl --version
curl 7.41.0 (i686-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

$ cat /etc/issue
Ubuntu 14.04.2 LTS \n \l

$ composer show -i

guzzle/guzzle                       v3.9.2             Guzzle is a PHP HTTP client library and framework for building RESTful web service clients
misd/guzzle-bundle                  v1.1.5             Integrates Guzzle into your Symfony2 application

$ apt-cache policy php5-curl

php5-curl:
  Installed: 5.5.9+dfsg-1ubuntu4.6
  Candidate: 5.5.9+dfsg-1ubuntu4.6
4

4 回答 4

7

同样的问题,通过升级到解决curl7.36由于某种原因 apt-get install 没有更新到 2015 年 8 月 14 日)

$ sudo add-apt-repository ppa:costamagnagianfranco/ettercap-stable-backports
$ sudo apt-get update
$ sudo apt-get install curl
于 2015-08-14T14:20:25.230 回答
2

我有一个类似的探针并通过使用 http/1.0 解决了它,这是一件非常奇怪的事情,但看起来 libcurl 或 curl php 模块中有问题,并且 guzzle 在响应的后处理中失败。

我在这里写了一篇文章来描述这件事

于 2015-04-21T18:31:35.463 回答
2

卷曲 6+ 解决方案

(new Client)->post(http://post.com, [
    'multipart' => $post,
    'curl'        => [
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0,
    ],
]);

基本上强制http 1.0是因为原因。

于 2016-11-10T13:58:35.970 回答
1

这听起来很熟悉 Michael Dowling(Guzzle 创建者)在他的博客中提到的关于使用 Guzzle 在 PHP 中进行分块传输编码的问题

要回答“我该如何解决”的问题,您的选择可能是:

  1. 修改网络服务的设置(可能可行,也可能不可行);和/或
  2. 修改您的请求对象。

如果没有代码显示您的客户端和请求对象或您的 curl “调用”方式,我只是在推测。

于 2015-03-19T19:43:48.183 回答