当php.ini文件的curl.cainfo和openssl.cafile配置属性没有针对任何允许你与ssl创建连接的有效证书时, 就会发生此错误, 因为它们将是无效的。如果使用cURL或使用任何类型的工具创建对外部服务器的请求, 就会遇到麻烦。
此问题是由位于Guzzle PHP HTTP客户端中的GuzzleHttp \ Exception \ RequestException和GuzzleHttp \ Ring \ Exception \ RingException类专门引发的。许多已知的项目(例如Symfony)都依赖此库来执行一些常见的http任务, 例如创建新项目(在最新的3.0版本中)。
如果找到php.ini文件, 并搜索[curl], 则这些参数可能会被注释且没有任何值:
[curl];
A default value for the CURLOPT_CAINFO option. This is required to be an;
absolute path.;
curl.cainfo=[openssl];
The location of a Certificate Authority (CA) file on the local filesystem;
to use when verifying the identity of SSL/TLS peers. Most users should;
not specify a value for this directive as PHP will attempt to use the;
OS-managed cert stores in its absence. If specified, this value may still;
be overridden on a per-stream basis via the "cafile" SSL stream context;
option.;
openssl.cafile=
为了解决这个问题, 我们只需要在两个属性中提供有效证书(cacert.pem文件)的绝对路径。
解 首先, 可能你的php发行版(使用Wamp或Xampp或其中的任何一个)可能包含有效证书, 但未启用。
使用操作系统的文件系统, 在已安装发行版的文件夹中搜索名为cacert.pem的文件。
文章图片
在这种情况下, 对于Xampp v5.6.23(PHP 5.6.23), 该文件存在并且位于perl文件夹中。现在, 将cacert.pem文件的完整文件路径复制到剪贴板中。
注意 如果你的xampp(或其他发行版)不包含任何具有该名称的文件, 请在此处下载cacert.pem文件, 并将其保存在xampp路径内的某个位置, 然后将其保存在剪贴板中的路径复制到该文件中。
再次打开php.ini文件并搜索[curl]区域, 现在我们将取消注释, 并使用剪贴板中的绝对路径(其中路径为其中的绝对路径)更改curl.cainfo和openssl.cafile属性的值。证书位于)双引号(“ 路径” )之间:
注意 即使在某些xampp发行版中, 在php.ini中也不会找到curl或openssl区域, 因此只需将其添加到php.ini文件的末尾并保存更改。
[curl];
A default value for the CURLOPT_CAINFO option. This is required to be an;
absolute path.curl.cainfo ="C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem"[openssl];
The location of a Certificate Authority (CA) file on the local filesystem;
to use when verifying the identity of SSL/TLS peers. Most users should;
not specify a value for this directive as PHP will attempt to use the;
OS-managed cert stores in its absence. If specified, this value may still;
be overridden on a per-stream basis via the "cafile" SSL stream context;
option.openssl.cafile="C:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem"
最后, 重新启动apache和任何其他服务(如mysql), 然后尝试再次执行你正在做的事情。现在, 该请求应该可以正常工作了。
【XAMPP-WAMPP PHP-SSL证书错误(unable to get local issuer certificate)】玩得开心 !
推荐阅读
- 如何在Symfony 3中访问Rest API
- 如何在C#和WinForms中操作和使用JSON
- 如何在Winforms应用程序中使用CefSharp(Chrome嵌入式框架c#)
- 如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本
- 什么是FTPS,FTP,SFTP,它们之间有什么区别
- 使用readme.md文件中的Github Markdown可能不知道的提示和技巧
- 使用PHPExcel使用图表生成的Excel文件会因Symfony中的流响应而损坏-PHP
- 如何在Symfony中获取教条查询状态(信息)
- 在Symfony 3中的表单上实现Google reCAPTCHA