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

时间:2015-01-21 11:43:14

标签: php ssl curl guzzle

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

到目前为止我在做什么:

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

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

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

我在google上找不到任何对此错误有用的引用。如果我可以访问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);

3 个答案:

答案 0 :(得分:58)

你应该使用

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

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

文档在这里: http://guzzle.readthedocs.org/en/latest/clients.html#verify

答案 1 :(得分:31)

尝试使用的更新版本:

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

或更简单的版本:

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

使用版本6.2-dev。

进行测试

答案 2 :(得分:17)

实际版本是正确的

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

2018年,这不起作用:

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