質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2234閲覧

Windows 10 php cURLで「Problem (2) in the Chunked-Encoded data」が発生する

ecor_maksin

総合スコア17

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/07/24 04:50

以下の現象について原因と対応方法をご存知の方、知見をいただけると幸いです。

  • Windows 10で発生します。
    PHPからcURL(POST)で開発システムの特定のパスへアクセスすると「Problem (2) in the Chunked-Encoded data」が発生します。
    ただし、cURLの実行前に以下のようにexec('curl -V');を実行すると発生しなくなります。
  • Linux(CentOS 7)では、exec('curl -V');を実行しなくても上記エラーは発生しません。

PHP

1 $ch = curl_init(); 2 curl_setopt( $ch, CURLOPT_URL, $url ); 3 curl_setopt( $ch, CURLOPT_POST, true); 4 curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query($params)); 5 curl_setopt( $ch, CURLOPT_TIMEOUT, 60); 6 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); 7 curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); 8 9 if (preg_match('/\A.*/<特定のパス>\z/', $url)) { // ←★追加 10 exec('curl -V'); // ←★追加 11 } // ←★追加 12 $response = curl_exec($ch); 13 $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

環境

  • OS: Windows 10 Pro(バージョン: 1809、OSビルド: 17763.437)
  • Nginx: 1.10.3
  • Apache httpd: 2.2.34(Linuxの場合は2.2.32)
  • PHP: 5.3.29
  • FuelPHP: 1.7.0
  • cURL: 下記

cURLのバージョン確認

>curl -V curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Release-Date: [unreleased] Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL
>where curl C:\Windows\System32\curl.exe

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

要求に対しての戻り値が確実に送信されることを保証するかどうか

上手くいくときの情報として httpのバージョンは?
ヘッダー情報として Transfer-Encoding の値? を取得できるものでしょうか。
そういった観点で上手くいくときとそうでないとき調べてみるとわかるかもしれませんね。

curlのオプションにhttp1.0で通信するように設定を追記してみては。

php

1curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

使用するバージョンを決めるのは cURL にまかせるとあるので曖昧なところがあります。
参考まで。

投稿2019/08/17 04:18

tukatter

総合スコア284

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ecor_maksin

2019/09/26 00:35

確認・返信が遅くなり大変申し訳ありません。 ご回答ありがとうございます。 ご提案いただいたようにhttp1.0で通信するよう設定を追記することで、エラーが発生しなくなりました。
tukatter

2019/09/26 08:17

よかったですね。 がんばってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問