ホームページ > バックエンド開発 > PHPチュートリアル > PHP cURL HTTPS 接続の問題を解決する方法?

PHP cURL HTTPS 接続の問題を解決する方法?

Mary-Kate Olsen
リリース: 2024-12-17 05:37:24
オリジナル
213 人が閲覧しました

How to Fix PHP cURL HTTPS Connection Issues?

PHP CURL と HTTPS

提供されている関数は、Web ページを取得するための優れたツールです。ただし、HTTPS URL を処理するときに問題が発生します。これを解決するには、HTTPS サポートを有効にするために必要な調整を行う必要があります。

解決策 1: CURLOPT_SSL_VERIFYPEER

最初で最も簡単な解決策は、次のオプションを$options 配列:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
ログイン後にコピー

これにより、証明書の検証が事実上無効になります。任意のホストに接続できるようになります。ただし、中間者攻撃に対して脆弱になるため、これはお勧めできません。

解決策 2: 更新された関数

別のアプローチとして、 get_web_page 関数に直接修正を加えました:

/**
 * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
 * array containing the HTTP server response header fields and content.
 */
function get_web_page($url)
{
    $options = [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => false,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING => '',
        CURLOPT_USERAGENT => 'spider',
        CURLOPT_AUTOREFERER => true,
        CURLOPT_CONNECTTIMEOUT => 120,
        CURLOPT_TIMEOUT => 120,
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_SSL_VERIFYPEER => false, // Disabled SSL Cert checks
    ];

    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $content = curl_exec($ch);
    $err = curl_errno($ch);
    $errmsg = curl_error($ch);
    $header = curl_getinfo($ch);
    curl_close($ch);

    $header['errno'] = $err;
    $header['errmsg'] = $errmsg;
    $header['content'] = $content;
    return $header;
}
ログイン後にコピー

この更新された関数は、次の方法で HTTP と HTTPS URL の両方をサポートするようになりました。セキュリティを犠牲にして証明書の検証を無効にします。

以上がPHP cURL HTTPS 接続の問題を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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