ホームページ >バックエンド開発 >PHPチュートリアル >「カール エラー 18 - 未処理の読み取りデータが残っているため転送が閉じられました」というメッセージが表示されるのはなぜですか? どうすれば解決できますか?

「カール エラー 18 - 未処理の読み取りデータが残っているため転送が閉じられました」というメッセージが表示されるのはなぜですか? どうすれば解決できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 06:13:02326ブラウズ

Why am I Getting

「curl エラー 18 - 未処理の読み取りデータが残っているため転送が閉じられました」を解決する

curl コマンドライン ツールを使用してリモート サーバーからデータを取得するときに、次のような問題が発生する可能性があります。エラー メッセージ「カール エラー 18 - 未処理の読み取りデータが残っているため転送が終了しました。」このエラーは、応答全体を受信する前に URL からデータを取得しようとした試みが中断され、データの一部または欠落が生じたことを示します。

通常、このエラーは、CURLOPT_RETURNTRANSFER が true に設定されている場合に発生し、 curl_exec 関数は、URL から取得したデータを返す必要があります。ただし、CURLOPT_RETURNTRANSFER を false に設定して無効にすると、取得したデータが直接表示され、エラーが回避されます。

エラーの原因

このエラーは次の原因で発生します。 HTTP 応答でのチャンク エンコーディングの使用。チャンクエンコーディングを使用すると、サーバーは、定義された文字シーケンスで各チャンクが終了する複数のチャンクでデータを送信できます。

すべてのチャンクを受信する前に接続が閉じられると、libcurl は最後に受信したチャンクが不完全であることを認識し、エラー メッセージが生成されます。

問題の解決

この問題に対処するには、主に 2 つの方法があります。

1.チャンク エンコーディングを無効にする:

代わりに、curl コマンドに -0 オプションを追加して、HTTP 1.0 リクエストの発行を試みることができます。 HTTP 1.0 はチャンク エンコーディングを使用しないため、この回避策でエラーが解決される可能性があります。

2.サーバーとネットワーク構成を検査します:

このエラーは、サーバーまたはネットワーク接続に問題があることを示している可能性があります。次の点を確認することをお勧めします:

  • サーバー構成が正しく構成されていないこと、または問題が発生していないことを確認します。
  • 潜在的な問題を特定するためのクライアントとサーバー間のネットワーク接続ボトルネックまたは中断。

以上が「カール エラー 18 - 未処理の読み取りデータが残っているため転送が閉じられました」というメッセージが表示されるのはなぜですか? どうすれば解決できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。