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

2024-01-11 05:18

本文主要是介绍PHP CURL HTTPS报错SSL certificate problem: unable to get local issuer certificate,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

起因:本地调用java接口返回无数据,但测试环境却是有数据的。

调试过程如下:

1,curl_getinfo — 获取一个cURL连接资源句柄的信息。

Array
([url] => https://grapserver.linkstars.com/goods/getSearch[content_type] => [http_code] => 0[header_size] => 0[request_size] => 0[filetime] => -1    //重点  远程获取文档的时间,如果无法获取,则返回值为“-1”[ssl_verify_result] => 20[redirect_count] => 0[total_time] => 0.097583[namelookup_time] => 0.000464[connect_time] => 0.044156[pretransfer_time] => 0[size_upload] => 0[size_download] => 0[speed_download] => 0[speed_upload] => 0[download_content_length] => -1[upload_content_length] => -1[starttransfer_time] => 0[redirect_time] => 0[redirect_url] => [primary_ip] => 62.234.91.232[certinfo] => Array()[primary_port] => 443[local_ip] => 10.254.30.29[local_port] => 61604[http_version] => 0[protocol] => 2[ssl_verifyresult] => 0[scheme] => HTTPS[appconnect_time_us] => 0[connect_time_us] => 44156[namelookup_time_us] => 464[pretransfer_time_us] => 0[redirect_time_us] => 0[starttransfer_time_us] => 0[total_time_us] => 97583
)

 

 

2,curl_error — 返回当前会话最后一次错误的字符串

SSL certificate problem: unable to get local issuer certificate

解决方法1

如果请求HTTPS的时候,默认会上述报错:

众所周知HTTPS需要证书认证,如果本地没有装,就会报这个错误,可以把ssl认证选项在curl发送请求时关掉。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-AjaxPro-Method:ShowList','Content-Type: application/json; charset=utf-8','Content-Length: ' . strlen($data_string))
);
// 关闭SSL验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
if ($data_string) {// 设置请求方式为postcurl_setopt($ch, CURLOPT_POST, 1);// post的变量curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);     
}else{// 设置请求方式为postcurl_setopt($ch, CURLOPT_POST, 0);
}
$data = curl_exec($ch);
$info = curl_getinfo($ch);
print_r($info);
curl_close($ch);

解决方法2

从curl官方网站,下载根证书:cacert.pem ,然后修改php.ini中加入该证书,并重启web服务。

#在php.ini中加入 [SSL] 
curl.cainfo ="D:\phpstudy_pro\Extensions\php\php7.3.4nts\extras\ssl\cacert.pem"
openssl.cafile = "${curl.cainfo}"

 

这篇关于PHP CURL HTTPS报错SSL certificate problem: unable to get local issuer certificate的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593273

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法

《Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法》本文解析Spring框架中BeanCreationExce... 目录引言一、问题描述1.1 报错示例假设我们有一个简单的Java类,代表一个用户信息的实体类:然后,

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

解决Failed to get nested archive for entry BOOT-INF/lib/xxx.jar问题

《解决FailedtogetnestedarchiveforentryBOOT-INF/lib/xxx.jar问题》解决BOOT-INF/lib/xxx.jar替换异常需确保路径正确:解... 目录Failed to get nested archive for entry BOOT-INF/lib/xxx

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原