gpt4 book ai didi

php - 使用 GuzzleHttp 时出现 cURL 错误 60

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:46 28 4
gpt4 key购买 nike

我想摆脱这个错误。我读了一个similar question其中一个答案建议我可以使用以下方法禁用验证:

$client->setDefaultOption('verify', false);

我的确切错误是:

Uncaught exception 'GuzzleHttp\Exception\RequestException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in C:\path\guzzle\src\Handler\CurlFactory.php:187 Stack trace: #0 C:\path\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1

C:\path\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2

C:\path\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Hand in C:\path\guzzle\src\Handler\CurlFactory.php on line 187

我阅读了所有这些行的代码,那里没有像 $client 这样的变量,但我在 CurlFactory.php 中找到了这个函数。请注意文件 CurlFactory.php 不是我创建的。

public function release(EasyHandle $easy)
{
$resource = $easy->handle;
unset($easy->handle);

if (count($this->handles) >= $this->maxHandles) {
curl_close($resource);
} else {
// Remove all callback functions as they can hold onto references
// and are not cleaned up by curl_reset. Using curl_setopt_array
// does not work for some reason, so removing each one
// individually.
curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
curl_setopt($resource, CURLOPT_READFUNCTION, null);
curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
curl_reset($resource);
$this->handles[] = $resource;
}
}

我可以在这里设置禁用验证的选项吗?

我知道禁用验证不是一个好主意,但该代码仅供个人使用并用于测试某些内容。如果我禁用验证没问题。这是我的实际 PHP 文件中的代码。

require('vendor/autoload.php');
use JonathanTorres\MediumSdk\Medium;

$medium = new Medium('my-key');

$user = $medium->getAuthenticatedUser();
echo 'Authenticated user name is: ' . $user->name;

如您所见,我没有在代码中的任何地方使用 cURL。这些选项需要在库中的某处设置。是否可以在我自己的文件中禁用验证而不是更改库的源代码?

最佳答案

您可能正在寻找选项 CURLOPT_SSL_VERIFYHOST .如果未指定,此设置默认为选项 2,这意味着如果证书名称与连接到的服务器名称不匹配,连接将失败。将此设置为 0 意味着将忽略主机名,并且无论名称是否不匹配,都将接受证书。通常这足以解决自签名证书的问题。

选项 1 是一个遗留选项,曾用于调试,但已弃用,不应使用。

这也可能是由于 curl 无法找到根证书包。你可以download the bundle from the curl site并将其保存到服务器上的某个位置,然后在 php.ini 中添加对它的引用,如下所示:curl.cainfo = FOLDER_PATH\cacert.pem

它也可能与 Guzzle 的版本有关,我发现这是关于 Guzzle versions later than 4 的问题的引用资料.不确定这是否适合您尝试。

关于php - 使用 GuzzleHttp 时出现 cURL 错误 60,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39860538/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com