仍然显示相同的错误:cURL错误60:SSL证书问题:无法获取本地颁发者证书

Ahi*_*han 2 php api ssl laravel

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

在此输入图像描述

我的代码

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

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

Vox*_*xii 5

如何解决这个问题呢:

  • 按照https://curl.se/docs/caextract.html中的说明下载并提取cacert.pem

  • 将其保存在文件系统的某个位置(例如,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"
Run Code Online (Sandbox Code Playgroud)
  • 重新启动您的网络服务器(例如 Apache)和 PHP FPM 服务器(如果适用)

参考这里

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

 $options = ['verify'=>false];
Run Code Online (Sandbox Code Playgroud)

要检查本地环境是否可以执行简单的 if:

public function authApi(){

    $options = [];

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

}
Run Code Online (Sandbox Code Playgroud)