Ubuntu:15.04
Laravel:5.4.32
GuzzleHttp \ Guzzle:~6.0
你好
当我尝试使用Laravel内置的身份验证重置密码时出现以下错误。当我输入我的电子邮件并点击重置时,我得到......
GuzzleHttp\Exceptions\RequestException
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
我已经用Google搜索了这个错误,并且从我读过的所有内容中我都尝试了以下内容,所有这些都没有用...
然而,在我重新启动apache后,没有任何工作。
我还跑了var_dump(openssl_get_cert_locations());
给了我以下......
[
"default_cert_file" => "/usr/lib/ssl/cert.pem",
"default_cert_file_env" => "SSL_CERT_FILE",
"default_cert_dir" => "/usr/lib/ssl/certs",
"default_cert_dir_env" => s"SSL_CERT_DIR",
"default_private_dir" => "/usr/lib/ssl/private",
"default_default_cert_area" => "/usr/lib/ssl",
"ini_cafile" => "/etc/ssl/certs/ca-certificates.crt",
"ini_capath" => "/etc/ssl/certs" ,
]
有人能给我一些想法吗?我错过了什么?
由于
答案 0 :(得分:1)
在项目中添加cacert.pem
文件,从
https://curl.haxx.se/ca/cacert.pem
将下载证书的副本复制到/vendor/guzzlehttp/guzzle/src
文件夹中。更改文件Client.php
找到名为getDefaultOptions()
用此替换$settings
数组,
$settings = [
'allow_redirects' => true,
'exceptions' => true,
'decode_content' => true,
//'verify' => true
'verify' => dirname(__FILE__).'/cacert.pem',
];
我所做的是验证添加了下载的文件配置,只更改了verify
的值。
如果您想要不安全地发送curl请求,可以通过设置verify => false
警告:这会使请求绝对不安全
答案 1 :(得分:1)
我遇到了类似的问题。无需更改/vendor/guzzlehttp/guzzle/src/Client.php
也许这可以帮到你。
从https://curl.haxx.se/docs/caextract.html下载cacert.pem文件 把cacert.pem放在你喜欢的地方。
编辑php.ini
两行:
curl.cainfo=D:/Servers/php/sslfiles/cacert.pem
openssl.cafile=D:/Servers/php/sslfiles/cacert.pem
答案 2 :(得分:0)
问题原因是IT部门更新了防火墙,而防火墙又以某种方式阻止了服务器发出请求(这与他们在发布问题时告诉我的情况相反)。一旦它被允许再次提出请求就行了。