当前位置: 首页 > 知识库问答 >
问题:

使用GuzzleHttp时出现cURL错误60

从焱
2023-03-14

我想摆脱这个错误。我读到一个类似的问题,其中一个答案建议我可以使用以下命令禁用验证:

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

我的确切错误是:

在C:\ path \ guzzle \ src \ Handler \ cURL factory . PHP:187堆栈跟踪:# 0 C:\ path \ guzzle \ src \ Handler \ cURL factory . PHP:187堆栈跟踪:# 0 C:\ path \ guzzle \ src \ Handler \ cURL factory . PHP(150):guzzle http \ Handler \ cURL factory

c:\ path \ guzzle \ src \ Handler \ curl factory . PHP(103):guzzle http \ Handler \ curl factory::finish error(Object(guzzle http \ Handler \ curl Handler),Object(guzzle http \ Handler \ easy handle),Object(guzzle http \ Handler \ curl factory))# 2

C:\path\guzze\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handin C:\path\guzze\src\Handler\CurlFactory.php第187行

我读了所有这些行的代码,没有像< code>$client这样的变量,但是我在< code>CurlFactory.php中找到了这个函数。请注意文件< code>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。这些选项需要在库的某个地方设置。是否可以在我自己的文件中禁用验证,而不是更改库的源代码?

共有1个答案

涂煌
2023-03-14

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

选项1是一个传统选项,过去用于调试,但已被弃用,不应使用。

这也可能是因为curl无法找到根证书包。您可以从curl站点下载这个包,并将其保存到服务器上的某个位置,然后在php.ini中添加对它的引用,如下所示:curl . cainfo = FOLDER _ PATH \ cacert . PEM

这也可能与古兹的版本有关,我发现引用这是古兹4号以后版本的一个问题。不确定这对你来说是否可行。

 类似资料:
  • 我试图通过tls连接上传一个带有显式ftp的文件,使用PHP中的cURL。使用ftp服务器的身份验证成功,但当我尝试以被动模式上载文件时,收到以下错误:“连接到server.domain.nl:21的未知SSL协议错误”。 这种情况下的问题是什么?可能是被动上载的端口被我的提供商阻止了吗?我可以更改文件上载的端口吗? 我的代码是:

  • 我正在尝试将php与firebase结合使用 安装软件包“composer require kreait/firebase php^4.0”后 调整我的火力基地 它向我显示了错误: 致命错误:未捕获错误http\Exception\ConnectException:cURL错误35:OpenSSL SSL\u connect:SSL\u error\u连接到ff64t的系统调用。firebasei

  • cURL错误35:连接中出现未知SSL协议错误(请参阅http://curl.haxx.se/libcurl/c/libcurl-errors.html)186/var/www/api/vendor/guzzlehttp://guzzle/src/Handler/CurlFactory.php

  • 我使用PHP CURL发送POSTFIELD,但我得到错误415不支持的媒体类型这是我的代码: 我收到错误信息 HTTP/1.1 415不支持的媒体类型日期:周三,01月2018 18:19:00格林尼治标准时间服务器:Apache缓存控制:无缓存缓存控制:无存储Pragma:无缓存内容长度: 903过期:周四,01月1970 00:00:00格林尼治标准时间设置-Cookie: WMONID=R

  • 它需要做的是获取用户名和密码,验证它并根据密码给出适当的输出。请帮帮我.也让我知道如果我的怀疑是正确的。另外,我听说在servlet程序中编写html代码不是一个好的做法。我还想知道如何在index.html文件中编写上面的html代码,这应该与该程序预期的行为方式相同。谢了。

  • 大约一到两周前,我就无法使用pip,因为它总是会回退以下错误: 错误:由于环境原因无法安装程序包错误:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):url超过最大重试次数:/packages/1b/e5/552ba6583ab43e12b299458fea94ee23886125b8b8babc91edb03f2ba65/p