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

Gnu*_*fo1 43 php ssl curl guzzle

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

到目前为止我在做什么:

$this->client = new GuzzleClient(['defaults' => [
    'verify' => 'false'
]]);
Run Code Online (Sandbox Code Playgroud)

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

RequestException in RequestException.php line 51:
SSL CA bundle not found: false
Run Code Online (Sandbox Code Playgroud)

我在谷歌上找不到任何有用的参考这个错误.如果我可以访问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);
Run Code Online (Sandbox Code Playgroud)

pjc*_*ins 63

你应该用

$this->client = new GuzzleClient(['defaults' => [
    'verify' => false
]]);
Run Code Online (Sandbox Code Playgroud)

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

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

  • ```defaults```实际上不是Guzzle 5 Client配置的一部分.你应该使用:$ this-> client = new GuzzleClient(['verify'=> false]); (18认同)
  • 文档页面稍微更改为:http://guzzle.readthedocs.io/en/latest/request-options.html#verify (6认同)
  • 为了澄清,这个答案特定于 Guzzle 5(问题中提到的版本),它确实有“默认值”(请参阅​​http://docs.guzzlephp.org/en/5.3/clients.html)。 (2认同)

小智 34

尝试使用的更新版本:

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

或更简单的版本:

    $this->client = new GuzzleClient(['verify' => false ]);
Run Code Online (Sandbox Code Playgroud)

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


Pri*_*cee 26

实际版本是正确的:

$this->client = new GuzzleClient(['verify' => false ]);
Run Code Online (Sandbox Code Playgroud)

在2018年,这不起作用:

$this->client = new GuzzleClient(['defaults' => [
    'verify' => false
]]);
Run Code Online (Sandbox Code Playgroud)


Ala*_*eam 12

你可以在新的 laravel 客户端版本中使用

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