什么网站服务器好,珠海微信网站,商城小程序开发多少钱,做美食的网站有哪些当在本地使用curl或者一些其它封装好的http类库或组件#xff08;如php界 知名的 http客户端 Guzzle#xff09;需要访问https时#xff0c;如果本地没有配置证书#xff0c;会出现SSL certificate problem: unable to get local issuer certificate的报错信息。 解决办法一…当在本地使用curl或者一些其它封装好的http类库或组件如php界 知名的 http客户端 Guzzle需要访问https时如果本地没有配置证书会出现SSL certificate problem: unable to get local issuer certificate的报错信息。 解决办法一环境配置方面 ①、下载pem文件
②、将文件拷贝到任意目录下这里我拷贝到了D:/Visual-NMP-x64/Bin/PHP/php-7.4.13-nts-x64目录下
③在php.ini配置文件中配置curl.cainfo配置项的值 例如 我这里配置为curl.cainfo “D:/Visual-NMP-x64/Bin/PHP/php-7.4.13-nts-x64/cacert.pem”
④、最后重启环境即可。 解决办法二代码层面 ①、如果是使用curl相关函数的话那么可以进行如下设置
如果是直接使用php内置的curl相关函数的话那么 可以在curl相关代码中添加下面的代码表示不检查ssl这种方式一般用于本地调试。
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //停止验证证书(一般只需要设置此项为false即可)curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。译者注公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2会检查公用名是否存在并且是否与提供的主机名匹配。 在生产环境中这个值应该是 2默认值。这里我们也可以直接设置为false//如果不是有什么特别细节的问题的话我们一般只需要设置上面哪一行代码 即 CURLOPT_SSL_VERIFYPEER选项 为false 即可。②、如果是使用Guzzle类库的话代码可以这么设置如下所示
$client new GuzzleHttp\Client();//以下是让Guzzle取消ssl证书验证
$client-request(GET, /, [verify false]); //取消ssl验证//以下是让Guzzle使用ssl证书验证别看错了
// 使用系统的CA包 (默认设置)
$client-request(GET, /, [verify true]); //这个可以不设置因为默认就是true//使用磁盘上自定义的SSL证书
$client-request(GET, /, [verify /path/to/cert.pem]);//注意Guzzle以上代码只在Guzzle6的版本中使用过如果是其它低版本或者Guzzle升级了版本写法可能有变动记得查阅官方文档即可