仍然显示相同的错误:cURL error 60: SSL certificate problem: unable to get local issuer certificate

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

我正在使用 PHP 8.1.2 版和 Laravel 9.8.1 版。我通过 https://www.scratchcode.io/curl-error-ssl-certificate-problem-unable-to-get-local-issuer-certificate/ link 中的这些步骤解决了这个问题。但我仍然遇到同样的错误。

我的代码

$response = Http::timeout(30)->get('http://example.com/users');

我也在 laravel 中做了另一个项目,但我仍然遇到同样的错误

如何解决这个问题:

  • 下载解压cacert.pem following the instructions at https://curl.se/docs/caextract.html

  • 将其保存在文件系统中的某处(例如,XAMPP 用户可能使用 C:\xampp\php\extras\ssl\cacert.pem)

  • 在你的php.ini中,把这个文件位置放在[curl]部分(放在[openssl]部分也是个好主意):

示例:

[curl]
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"

[openssl]
openssl.cafile = "C:\xampp\php\extras\ssl\cacert.pem"
  • 重新启动您的网络服务器(例如 Apache)和 PHP FPM 服务器(如果适用)

参考here

您还可以删除本地主机上的 SSL 验证。只需要在 'withOptions' 方法中向 de GuzzleHttp 客户端添加选项以禁用验证。

 $options = ['verify'=>false];

检查本地环境是否可以做一个简单的 if:

public function authApi(){

    $options = [];

    if (App::environment('local')) {
        $options = ['verify'=>false];
    }
    return Http::withBasicAuth($this->client_key, $this->client_key_secret)->withOptions($options);

}