首页 > 后端开发 > php教程 > 如何修复 PHP cURL HTTPS 连接问题?

如何修复 PHP cURL HTTPS 连接问题?

Mary-Kate Olsen
发布: 2024-12-17 05:37:24
原创
210 人浏览过

How to Fix PHP cURL HTTPS Connection Issues?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板