如何在 Guzzle 5 中忽略无效的 SSL 证书错误


How to ignore invalid SSL certificate errors in Guzzle 5

这应该是一件容易的事情。我可以在 Guzzle 3 中找到很多关于如何做到这一点的参考资料,但它们在 Guzzle 5 中不起作用。

到目前为止,我正在做什么:

$this->client = new GuzzleClient(['defaults' => [
    'verify' => 'false'
]]);

当我发送请求时,虽然收到此错误:

RequestException in RequestException.php line 51:
SSL CA bundle not found: false

我在谷歌上找不到任何关于此错误的有用参考。如果我可以访问 curl 选项,那么我可以尝试类似于此处建议的解决方案(适用于 Guzzle 3,因此它不起作用):http://inchoo.net/dev-talk/symfony2-guzzle-ssl-self-signed-certificate/,其相关部分是:

$req->getCurlOptions()->set(CURLOPT_SSL_VERIFYHOST, false);
$req->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, false);
你应该

使用

$this->client = new GuzzleClient(['defaults' => [
    'verify' => false
]]);

即布尔值 false,而不是字符串 'false'

文档在这里:https://docs.guzzlephp.org/en/5.3/clients.html#verify

注意:有些人给出了适用于Guzzle 6+的其他答案。如果您使用这些版本,它们是很好的答案(但最初的问题明确是关于 Guzzle 5)。

尝试使用有效的更新版本:

$this->client = new GuzzleClient(['base_uri' => 'https://api.example.com/', 'verify' => false ]);

或更简单的版本:

    $this->client = new GuzzleClient(['verify' => false ]);

使用版本 6.2-dev 进行测试。

实际版本是正确的

$this->client = new GuzzleClient(['verify' => false ]);

在 2018 年,这不起作用:

$this->client = new GuzzleClient(['defaults' => [
    'verify' => false
]]);
您可以在

新的Laravel客户端版本中使用

$http = new Client(['verify' => false]);