phpのcurl_execから返されるエラーを解決する方法

PHPz
リリース: 2023-04-21 09:20:57
オリジナル
1373 人が閲覧しました

PHP を使用して Web アプリケーションを開発する場合、多くの場合、curl_exec 関数を使用して HTTP リクエストを送信する必要があります。ただし、curl_exec 関数を使用すると、エラー メッセージが返され、リクエストが失敗することがあります。これらのエラー メッセージには、ネットワーク接続エラー、HTTP エラー コードなどが含まれる場合があります。この記事では、これらのエラー メッセージを分析して解決します。

  1. ネットワーク接続エラー

接続エラーは、curl_exec 関数の使用時によく発生するエラーの一種です。接続エラーが発生した場合、次のエラー メッセージが返されることがあります:

「ホストに接続できませんでした」、「接続が拒否されました」、「操作がタイムアウトしました」

これらのエラー メッセージは通常、次のことを示します。接続が対応していないこと サーバーまたはポートが利用できないか、ネットワークが遅延しています。この場合、まずネットワーク接続が正常かどうか、サーバーまたはポートが開いているかどうかを確認する必要があります。ネットワーク接続が正常で、サーバーまたはポートが開いている場合は、curl タイムアウトを増やして接続異常の問題を解決してみることができます。

次は、タイムアウトを増やすコード例です:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
curl_close($ch);
ログイン後にコピー

上記のコードでは、CURLOPT_CONNECTTIMEOUT は接続タイムアウトを 10 秒に設定し、CURLOPT_TIMEOUT は要求タイムアウトを 30 秒に設定します。実際の状況に基づいて設定する必要があります。

  1. HTTP エラー コード

HTTP エラー コードは、curl_exec 関数の使用時によく発生するもう 1 つのエラーです。 HTTP エラー コードは、1xx、2xx、3xx、4xx、5xx の 5 つのカテゴリに分類されます。一般的なエラー コードは次のとおりです:

400 Bad Request: リクエストの形式が正しくありません;
401 Unauthorized: 認証が必要です;
404 Not Found: 対応するリソースが見つかりませんでした;
500 内部サーバー エラー : サーバーの内部エラー。

curl_exec 関数を使用して URL にリクエストを送信するときに、上記の HTTP エラー コードが返された場合は、さまざまなエラー コードに応じて適切に処理する必要があります。以下は、HTTP エラー コードを処理するコード例です。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

switch ($httpCode) {
    case 200:
        // 处理请求正常返回结果
        break;
    case 404:
        // 处理请求结果未找到的情况
        break;
    default:
        // 处理其他情况
        break;
}
ログイン後にコピー

上記のコードでは、返された結果の HTTP エラー コードは、curl_getinfo 関数を通じて取得でき、HTTP エラーに従って対応する処理が実行されます。 switch ステートメント内のコード。

  1. その他のエラー

curl_exec 関数を使用すると、SSL エラー、長すぎるデータなど、他のエラーが発生する場合もあります。これらのエラーについては、特定の状況に応じて適切に処理する必要があります。いくつかの一般的なエラーを処理する方法は次のとおりです:

  • SSL エラー: PHP では、CURLOPT_CAINFO および CURLOPT_CAPATH オプションを使用して SSL 証明書情報を設定する必要があります。証明書が使用できない場合は、次のことができます。 SSL 検証をスキップするには、 CURLOPT_SSL_VERIFYHOST および CURLOPT_SSL_VERIFYPEER オプションを false に設定します。
  • データが長すぎます:curl_exec 関数はデフォルトでメモリ内のデータを処理します。データが長すぎると、メモリ オーバーフローが発生する可能性があります。この問題を解決するには、CURLOPT_WRITEFUNCTION および CURLOPT_FILE オプションを使用して、データをファイルに書き込むか、データをチャンク化します。
  • その他のエラー: 実際の状況に基づいて分析し、curl_getinfo 関数を使用して、対応する処理の詳細なエラー情報を取得します。

一般に、PHP でcurl_exec 関数を使用する場合は、軽微な問題によるリクエストの失敗を避けるために、上記の点に注意する必要があります。エラー状況ごとに、特定の状況に基づいて適切に処理する必要があります。同時に、curl_exec 関数を使用する場合は、ログと組み合わせてデバッグし、原因をより適切に見つけて問題を解決することをお勧めします。

以上がphpのcurl_execから返されるエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート