34

我在 Laravel 5 中使用社交名流来设置 facebook 登录。我仔细按照说明进行操作,直到遇到以下错误

cURL error 60: SSL certificate problem: unable to get local issuer certificate

所以我找到了这个答案来修复它,它确实通过了,但后来我得到了这个错误

cURL error 77: error setting certificate verify locations:
CAfile: /Applications/XAMPP/xamppfiles/cacert.pem
CApath: none

任何想法这个错误的原因是什么?!以及如何解决?!

4

23 回答 23

33

我也陷入了这个问题。事实证明,我的 php.ini 文件中的证书路径设置不正确。忘记了 .txt 扩展名。

我有什么:

curl.cainfo = "C:\xampp\php\cacert.pem"

我将其更改为:

curl.cainfo = "C:\xampp\php\cacert.pem.txt"

希望这可以帮助。

于 2015-05-19T00:16:39.717 回答
26

在 c:\xampp\php\cacert.pem 中添加来自https://curl.haxx.se/ca/cacert.pem的 cacert.pem 文件

更改 php.ini 文件中的设置:

curl.cainfo = "C:\xampp\php\cacert.pem

于 2016-11-29T09:10:08.660 回答
23

我的错误是:

cURL 错误 77:错误设置证书验证位置:CAfile:C:\xampp\apache\bin\curl-ca-bundle.crt CApath:无(参见 http://curl.haxx.se/libcurl/c/libcurl-errors .html )


这对我很有效:

  1. 从以下网址下载证书:https ://curl.haxx.se/ca/cacert.pem
  2. 将cacert.pem文件重命名为curl-ca-bundle.crt
  3. 将文件复制到path/to/xampp/apache/bin
  4. 重启阿帕奇
于 2019-03-20T14:58:15.857 回答
8
  1. 将此证书 ( https://curl.haxx.se/ca/cacert.pem )保存cacert.pem.txtC:\xampp\php
  2. 添加到php.ini

    curl.cainfo = "C:\xampp\php\cacert.pem.txt"
    
  3. 不要忘记重新启动 XAMPP(它在重新启动之前不会工作)

然后它工作正常!

于 2016-05-03T18:19:52.030 回答
7

按照有关错误 77 的说明,我遇到了一些问题。

在 Windows 7 上,根据您的安全设置 - 下载的文件可能会被阻止。看截图:

Windows 7 文件属性

解锁文件并确保正确的用户访问权限后,我还必须将文件放在以下位置:

C:\xampp\apache\bin\cacert.pem.txt

除了根据有关此问题的其他帖子更改 php.ini 之外。

curl.cainfo="C:\xampp\php\cacert.pem.txt"

完成上述步骤后,通过XAMPP控制面板重启Apache,错误解决。

于 2019-04-24T14:11:46.827 回答
6
  1. 从(https://curl.haxx.se/ca/cacert.pem)下载
  2. 将名称“cacert.pem”更改curl-ca-bundle.crt
  3. 在 ' php.ini ' 中,删除' ' 在以下行中: curl.cainfo="C:\xampp\apache\bin\curl-ca-bundle.crt"

这对我行得通。

于 2019-03-13T05:05:01.943 回答
4

签出 php.ini 文件上的双引号:如果您从 Web 复制并过去,您可能得到了错误的双引号:

”C:\xampp\php\cacert.pem.txt”</p>

代替

"C:\xampp\php\cacert.pem.txt"

于 2016-08-25T10:22:23.787 回答
2

对于窗户

我在window 2008上更新php后遇到了同样的问题。突然我所有的php代码都停止工作了。我做了什么,我打开了 php.ini 然后我找到了一行

;curl.cainfo =

我改为

curl.cainfo = "C:\Program Files (x86)\PHP\v7.0\cacert.pem" (记得在 curl.cainfo 之前删除 ;)

一切都正常了。您需要下载一个证书文件cert.pem并将其放在服务器上的任何位置,然后像我在 php.ini 中所做的那样更改行

于 2017-10-23T07:19:48.830 回答
2

我在 windows 上的 php 版本 8.0.3 中也遇到了同样的问题:解决方案是我不得不取消注释并在 php.ini 文件中设置 openssl.capath=path of certs。

我已经设置了 openssl.cafile 所以它没有为此抛出错误,但是没有设置 oepnssl.capath ,所以存在错误。

openssl.cafile="C:\Users\Akta\Softwares\php-8.0.3-nts-Win32-vs16-x64\extras\ssl\demoCA\cacert.pem"

openssl.capath="C:\Users\Akta\Softwares\php-8.0.3-nts-Win32-vs16-x64\extras\ssl\demoCA\certs"

于 2021-03-16T09:20:26.393 回答
2

在您的 php.ini 文件中,您还应该更新您的

;openssl.cafile 

使用您在更新时使用的相同 cacert.pem 链接

;curl.cainfo

看看我的之前和之后

;curl.cainfo =

;openssl.cafile=

curl.cainfo ="C:\php-7.4.11\extras\ssl\cacert.pem"

openssl.cafile="C:\php-7.4.11\extras\ssl\cacert.pem"

这修复了 cURL 60 错误

curl.cainfo ="C:\php-7.4.11\extras\ssl\cacert.pem" 

尽管

openssl.cafile="C:\php-7.4.11\extras\ssl\cacert.pem" 

修复了 cURL 77 错误。

玩得开心!

注意:在尝试之前不要忘记重新启动服务器。

对于那些希望找到他们的 php.ini 文件的人,请在 cd 进入应用程序后使用此命令

php -i | grep 'Configuration File'
于 2021-02-05T13:30:01.660 回答
2

您需要在此处将现有证书替换为另一个证书。在那之后:

  • 提取并添加到xampp\php\ext
  • 打开xampp\php\php.ini
  • 将此行添加curl.cainfo='location from the first step'到文件末尾。
  • 重新启动,它现在应该可以工作了。

这是链接。

于 2016-11-08T11:38:27.853 回答
1

我阅读了我能找到的每一个线程,而这个线程提供了缺失的部分。

背景:我在尝试让 Drupal 8 检查新开发环境(基于 wamp)上的可用更新时遇到了这个问题。

  1. 从 Mozilla 获取证书数据的副本,可以在此处找到: https ://curl.haxx.se/ca/cacert.pem 如果您想了解更多关于此内容的信息,请阅读:https://serverfault。 com/questions/241046/what-is-the-cacert-pem-and-for-what-to-use-that
  2. 将文件另存为“cacert.pem.txt”而不是“cacert.pem”这是缺少的部分,感谢 LyleK!。我不知道为什么,但你必须在末尾有 .txt 扩展名,否则它不起作用。
  3. 将“cacert.pem.txt”文件所在位置的路径显式添加到您的 php.ini

例子:

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = "C:\wamp\custom\cacert.pem.txt"

如果您使用的是 wamp 堆栈,请重新启动它。你应该很高兴。

于 2016-02-08T16:41:53.870 回答
1

如果有人使用 Plesk 运行 Windows,他们会收到此错误。

您必须确保 curl.cainfo 路径位于 Plesk PHP 目录中,否则即使修复也会出现上述错误。

curl.cainfo = "C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP55\extras\ssl\cacert.pem.txt"

为我固定。希望这可以帮助某人,某天,某处。

于 2017-05-19T15:42:33.617 回答
1

首先,您需要下载“curl.cainfo”文件,然后将其定位到C:\xampp\php\cacert.pem.txt

其次,您需要在 Xampp 中打开您的 php.ini 文件并复制它 =>

curl.cainfo = C:\xampp\php\cacert.pem.txt任何你想要的地方。

第三,请重新启动您的Apache 服务器刷新您的本地主机页面,这应该可以正常工作。

于 2016-08-06T15:59:13.713 回答
1

我试过@mahesh-singh-chouhan、@omarsafwany、@LyleK 解决方案。但反复得到同样的错误。

之后,我更新了不带双引号的 php.ini 文件,并使用.pem扩展名,我成功地使用下面的代码获得了所需的结果。

curl.cainfo=E:\Xampp-5.6.3\php\ext\cacert.pem

我还附上了截图。

请先尝试以上用户的建议,如果失败也使用这个。

感谢您的解决方案它为我创造了道路@mahesh-singh-chouhan,@omarsafwany,@LyleK

在此处输入图像描述

于 2017-10-18T15:04:48.623 回答
0

我遇到了同样的问题,我尝试了这里和其他帖子中提到的所有解决方案,但都没有奏效。我试过
1)设置正确的文件权限(没用)
2)更改文件扩展名(没用)


然后我将 cacert.pem 文件移动到 xampp 的 php/ 目录中并重新启动它,它工作了。希望它可以帮助某人。

于 2016-05-12T06:02:20.190 回答
0

我在 Windows 2012 中遇到了这个问题

我有一个虚拟专用服务器托管 laravel

然后我有这个错误和

  • 从这里下载该文件
  • 在 php 7.2 中放入我的附加文件夹
  • 在我的 php.ini 文件中找到这一行

    [卷曲]

    ; CURLOPT_CAINFO 选项的默认值。这必须是一个

    ; 绝对路径。curl.cainfo = extras/ssl/cacert.pem

  • 我将我的下载文件粘贴到 php 文件中,如下所示:

curl.cainfo = "C:\Program Files (x86)\PHP\v7.2\extras\ssl\cacert.pem" cacert错误rest api调用curl php

  • 然后保存 php.ini
  • 然后重新启动我的 iis 或只是网站

重新启动您的 iis windows 2012 cacert 77 错误 laravel php

就我而言,我只是重新启动我的网站

于 2019-09-24T15:34:28.297 回答
0

这对我有用

curl.cainfo = "C:\xampp\php\cacert.pem.txt"

希望它对某人有帮助:)

于 2016-08-27T17:11:40.370 回答
0

您似乎忘记为文件路径添加引号。我遇到了同样的错误(77),那是因为我忘了加引号。我通过添加解决了这个问题。前任:"C:\AppServ\php\cacert.pem"

于 2018-12-04T07:28:16.507 回答
0

要解决此错误,请使用以下代码:

 $client = new Client(['verify' => false ]);

并在您的代码中像这样使用这个 $client :

   $headers = [
            'Authorization' => 'Bearer ' . $token,
            'Accept' => 'application/json',
            RequestOptions::BODY => ' any code for your body ',
        ];

        $response = $client->request('POST', 'bar', [
            'headers' => $headers
        ]);

        $response = $response->getBody()->getContents();

        return $response;
于 2020-09-18T21:25:25.270 回答
-1

我有同样的问题。您必须使用简单的编辑器(bloc-note)打开文件 .pem 或 pem.txt 并通过文件中的(https://curl.haxx.se/ca/cacert.pem)。你必须重新加载apache。

于 2017-04-14T09:25:53.960 回答
-1

you did not read the error carefully, now read it carefully

cURL error 77: error setting certificate verify locations: CAfile: D:\XAMPP\apache\bin\curl-ca-bundle.crt CApath: none (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

it means you are missing a file called curl-ca-bundle.crt to verify certificate locations, so you just need to put this(curl-ca-bundle.crt) file into your XAMPP\apache\bin\ folder and everything is fine error 77 has gone.

curl-ca-bundle.crt, to download the file you can use this link https://github.com/nirmalkumar98/nk

于 2019-03-17T03:18:52.800 回答
-5

如果和git有关:

git config --global http.sslverify "false"

将解决问题。

于 2016-02-25T14:45:43.737 回答