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 サイトの他の関連記事を参照してください。