PHP CURL 和 HTTPS
提供的函数是检索网页的绝佳工具。但是,它在处理 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中文网其他相关文章!