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

curlにアップグレードすることで解決される同じ問題7.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

Curl 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

これは、 Guzzle を使用した PHP の Chunked Transfer Encodingに関するブログで、Michael Dowling (Guzzle の作成者) が言及した問題に早くからおなじみのように思えます。

「どうすれば修正できますか」という質問に答えるには、次のいずれかのオプションを選択できます。

  1. Web サービスの設定を変更します (実行できる場合とできない場合があります)。および/または
  2. リクエスト オブジェクトを変更します。

クライアントとリクエストオブジェクト、またはcurlの「呼び出し」を表示するコードがなければ、単に推測するだけです。

于 2015-03-19T19:43:48.183 に答える