Я работаю над веб-сервером, использующим goutte (fabpot / goutte). Когда я пытаюсь подключиться к сайту https, он выдает ошибку, потому что сайт использует самоподписанный сертификат. Я пытаюсь найти способ установить параметры завитка, чтобы игнорировать тот факт, что сертификат 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);
К сожалению, когда этот код выполняется, возникает следующая ошибка:
Обрезаемая фатальная ошибка: аргумент 3, переданный в GuzzleHttp \ Client :: request (), должен быть из массива типов, boolean given
Невозможно определить, как настроить параметры. Как ожидается звонок? Любая помощь будет оценена.
Для установки параметров завивки, кстати, похоже, что guzzle распознает ключ «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);
Не уверен, насколько хорошо это поддерживается, поскольку оно не указано нигде в документах жужжания (и это делает его похожим на его зависимость от CURL, который, я думаю, не предназначен для жука. Следовательно, общая запись конфигурации таймаута) ,
То, что я закончил, это следующее:
$this->client->setClient(new GuzzleClient(['verify' => false]));
При проверке сертификатов «check» => false при запуске GuzzleClient он не проверяет сертификаты.