设置fabpot / goutte客户端的CURL参数

时间:2016-05-19 13:21:21

标签: php ssl curl goutte

我正在使用goutte(fabpot / goutte)在网络上工作。当我尝试连接到https站点时,它会引发错误,因为该站点使用的是自签名证书。我试图找到设置curl参数的方法,以忽略ssl证书是自签名的事实。 按照https://github.com/FriendsOfPHP/Goutte中的说明操作,我尝试了以下代码:

    $this->client = new Client();
    $this->client->getClient()->setDefaultOption('config/curl/'.CURLOPT_SSL_VERIFYPEER, false);
    $this->client->getClient()->setDefaultOption('config/curl/'.CURLOPT_CERTINFO, false);

不幸的是,执行此代码时会引发以下错误:

可捕获致命错误:传递给GuzzleHttp \ Client :: request()的参数3必须是类型数组,布尔值为

无法弄清楚如何设置参数。通话预期如何?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

顺便说一下,要设置卷曲选项,看起来像guzzle识别键#34; curl"作为配置设置,它接收一组与curl相关的配置值。因此,相当于您最初尝试实现的内容将如下所示

$client = new \Goutte\Client();

$guzzleClient = new \GuzzleHttp\Client(array(
    'curl' => array(
        CURLOPT_TIMEOUT => 60,
    ),
));
$client->setClient($guzzleClient);
$crawler = $client->request('GET', $my_url);

不确定支持得多好,因为它没有在guzzle文档中的任何地方显示(并且这样做会使它看起来像依赖于CURL,我认为这不是guzzle的意图。因此,一般超时配置条目)。

答案 1 :(得分:1)

仅在最新版本的Goutte(v4.0)中有效。

使用此HttpClient接口:

use Symfony\Component\HttpClient\HttpClient;

Goutte实例。

$client = new \Goutte\Client(HttpClient::create(['verify_peer' => false]));

答案 2 :(得分:0)

我最终做的是以下内容:

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

'verify'=>启动GuzzleClient时为false,使其无法验证证书。