PHP CURL GET HTTPS报错SSL certificate problem: unable to get local issuer certificate

2022-11-15 17:49:41 浏览数 (1)

请求HTTP

使用php curl获取http资源,不会报错。 如下:

代码语言:javascript复制
<?php
// 创建curl资源
$ch = curl_init(); 
// 设置url
curl_setopt($ch, CURLOPT_URL, "baidu.com"); 
// 将Transfer作为字符串返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行并输出
$output = curl_exec($ch); 
// 查看错误
$error = curl_error($ch);
echo $error;
// 释放curl资源
curl_close($ch); 

Jetbrains全家桶1年46,售后保障稳定

请求HTTPS

但是如果请求HTTPS的时候,默认会报错:

代码语言:javascript复制
SSL certificate problem: unable to get local issuer certificate

这是因为HTTPS需要证书认证,如果本地没有装,就会报这个错误,我们可以把这个认证关掉。

代码语言:javascript复制
<?php
// 创建curl资源
$ch = curl_init(); 
// 设置url
curl_setopt($ch, CURLOPT_URL, "https://github.com/search?q=react"); 
// 将Transfer作为字符串返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 关闭SSL验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
// 执行并输出
$output = curl_exec($ch); 
// 查看错误
$error = curl_error($ch);
echo $error;
// 释放curl资源
curl_close($ch);  

配置HTTS

另外的一种解决办法,就是配置上HTTPS,找到证书:

到http://curl.haxx.se/ca/cacert.pem 下载pem文件。

在PHP配置文件(php.ini)里配置PEM文件目录位置。

代码语言:javascript复制
curl.cainfo = "pathtocacert.pem"

参考:http://php.net/manual/zh/function.curl-setopt.php

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/230835.html原文链接:https://javaforall.cn

0 人点赞