![](/img/trans.png)
[英]PHP cURL (SSL certificate problem: self signed certificate in certificate chain)
[英]cURL SSL certificate problem: self signed certificate Laravel 9
我有一篇文章发布仪表板网站,我从网站发送 cURL 请求,我想在仪表板上显示文章并返回数据,这是我正在使用的代码:
public function articleData(Request $request, $text){
$host1 = request()->getHost();
$host = str_replace('www.', '', $host1);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://somedomain.com/getData?host=$host&artURL=".strtolower($text),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$article = curl_exec($curl);
curl_close($curl);
$articles = json_decode($article, true);
return view('Pages.articleTemp')->with('articles', $articles[0]);
}
我面临的问题是,当我将它上传到实时服务器时,它停止返回数据,这使得网站抛出错误。
我试过用这个
print curl_error($curl);
它返回此错误:SSL 证书问题:自签名证书
我尝试在 cURL 数组中使用这些:
CURLOPT_SSL_VERIFYHOST
CURLOPT_SSL_VERIFYPEER
没有任何效果
它在本地主机上运行良好,这仅在实时服务器上。
这些选项禁用 SSL
CURLOPT_SSL_VERIFYHOST
CURLOPT_SSL_VERIFYPEER
您可能需要使用URLOPT_CAINFO
选项,或者可以使用CURLOPT_CAPATH
选项指定证书目录
这没什么大不了的。 这更像是个人的烦恼。
虽然 GET 是CURLOPT_CUSTOMREQUEST
的有效参数
它会起作用,但 PHP 手册说:
执行 HTTP 请求时使用的自定义请求方法,而不是“GET”或“HEAD”。 这对于执行“删除”或其他更模糊的 HTTP 请求很有用。
使用CURLOPT_HTTPGET=>true,
如果 URL 使用违反RFC 3986 - 统一资源标识符 (URI) 中定义的通用 URI 语法的任何字符,您可能需要使用 urlencode():通用语法
一个例子
urlencode($text);
我看到$request
已传递给您的 function
我没有看到任何CURLOPT_HTTPHEADER
我看到你定义的 $host 应该在 HTTP 请求 Header
$request = array();
$request[] = "Host: $host";
CURLOPT_HTTPHEADER=>$request,
cURL error 60: SSL certificate problem: unable to get local issuer certificate error occurs when we try to call the API with the secure https:// protocol in the request URL.
为什么会出现 cURL 错误 60 SSL 证书?
您的 API 调用尝试仅使用 http:// 协议运行请求 URL。 您再也看不到错误了,因为安全的 API 调用需要 SSL 证书或 https:// 协议。
阅读更多: 如何修复 cURL 错误 60 SSL 证书问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.