【问题标题】:How to solve cURL error 60: SSL certificate in Laravel 5 while Facebook authentication如何解决 cURL 错误 60:Facebook 身份验证时 Laravel 5 中的 SSL 证书
【发布时间】:2015-09-07 14:30:40
【问题描述】:

目前,我正在 laravel5 上做一个项目。

我使用 socialize 进行 Facebook 身份验证,但出现下面提到的 cURL 错误。

 RequestException in CurlFactory.php line 162:
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

我在互联网上搜索并完成了以下更改,但没有帮助

  • 已下载 cart.pem 文件
  • 设置路径“curl.cainfo ="C:\xampp\cacert.pem"
  • 同时取消注释“extension=php_curl.dll”

我在控制器中的代码

public function fb()  
{
    return Socialize::with('facebook')->redirect();
}
public function cb()    //callback for facebook
{
    $user = Socialize::with('facebook')->user();
    var_dump($user);
}

【问题讨论】:

标签: php facebook ssl curl laravel-5


【解决方案1】:

在使用 Laravel 的本地主机上时,您可以轻松绕过 cURL 错误。

导航到 Client.php 文件 (vendor\guzzlehttp\guzzle\src\Client.php)

将“验证”改为假

$defaults = [
        'allow_redirects' => RedirectMiddleware::$defaultSettings,
        'http_errors'     => true,
        'decode_content'  => true,
        'verify'          => false,
        'cookies'         => false
    ];

【讨论】:

  • 错误的解决方案。随着下一个作曲家更新更改可能会被覆盖。
  • @Tajni 然后你就可以解决在本地主机上安装证书的麻烦了!
【解决方案2】:

https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate

https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/52954

我只是花了几个小时来解决这个问题。正确答案是

“确实将 cacert.pem 文件并修改 php.ini 文件以匹配上面 Moez 的建议。.....但我不断收到 CURL 错误 60's 诀窍是获得一个干净的副本的 PEM 文件!任何涉及 Windows 记事本或其他编辑器的方法都会损坏文件并给出 cURL 错误 60 等。最后我找到了https://gist.github.com/VersatilityWerks/5719158/download 并下载了一个带有 cacert.pem 文件的干净副本的 tar 文件..... . 然后一切都很完美。”

由于您在 Windows 上工作,这可能是问题所在。

【讨论】:

  • 这个 .pem 文件放在哪里?
  • @DanielAccorsi 你可以把它放在任何地方,但它应该可以被 php 解释器读取。
  • 如果有人在使用 Wamp 服务器,正确的文件位于:"C:\wamp\bin\apache\apache\bin\php.ini"
  • VersatilityWerks 不再存在于 github 上。
【解决方案3】:

Windows : php.ini

工作正常

【讨论】:

【解决方案4】:

对于拔头发的人说“我已经下载了一个原始的 cacert.pem 文件,将其放在正确的位置,正确设置 curl.cainfo,并重新启动了我的 APACHE 服务器,但它只是不起作用!?! ?"... 如果您使用的是 php-fpm,那么 service apache2 restartservice apache2 reload更新参考,您将继续收到错误 60。如果您故意指向 curl.cainfo到错误的路径,您将不会收到预期的错误 77(第一条线索)。

要重新启动 php-fpm 并更新该引用(无需重新启动整个服务器),请使用 service php-fpm restartservice php5-fpm restartservice php7-fpm restartservice php7.0-fpm restart 等,具体取决于您的 php 版本。希望这有助于节省时间。

【讨论】:

    【解决方案5】:

    经过大量研究,我找到了最好的解决方案。您只需在 vendor/guzzlehttp/guzzle/src/Client.php 文件中将验证设为 false 即可。

        $defaults = [
            'allow_redirects' => RedirectMiddleware::$defaultSettings,
            'http_errors'     => true,
            'decode_content'  => true,
            'verify'          => true, // make this false
            'cookies'         => false,
            'idn_conversion'  => true,
        ];
    

    【讨论】:

    • 不要在生产环境中这样做。在供应商中编辑文件也是一个大错误。如果 composer 更新该库,您所做的任何更改都会被破坏,然后会破坏您的代码。
    【解决方案6】:

    嗯,有时可能会令人困惑。当您检查php.ini 文件时,您将看到;curl.cainfo = “certificate path\cacert.pem” 您必须注意前面有一个分号。删除它和所有引号,然后简单地将文件路径看起来像这样 curl.cainfo = C:\xampp\php\extras\ssl\cacert.pem 如您所见,我的 cacert.pem 位于路径 C:\xampp\php\extras\ssl\cacert.pem 应该在的位置。保存并重新启动您的服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-22
      • 2020-09-14
      • 2016-12-07
      • 2017-11-21
      • 2017-01-12
      • 2019-01-03
      • 2017-08-18
      • 2019-10-27
      相关资源
      最近更新 更多