2016-05-19 10 views
2

Ich arbeite an einem Web Crowler mit Goutte (Fabpot/Goutte). Wenn ich versuche, eine Verbindung zu einer HTTPS-Site herzustellen, wird ein Fehler ausgegeben, da die Site ein selbstsigniertes Zertifikat verwendet. Ich versuche, den Weg zu finden, um die Curl-Parameter zu setzen, um die Tatsache zu ignorieren, dass das SSL-Zertifikat selbstsigniert ist. die Anweisungen in https://github.com/FriendsOfPHP/Goutte Nach habe ich versucht, den folgenden Code:Einstellung der CURL-Parameter für fabpot/goutte Client

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

Leider, wenn dieser Code der folgende Fehler ausgeführt wird, ausgelöst wird:

Abfangbare fatale Fehler: Argument 3 bis GuzzleHttp \ Client übergibt :: Anfrage() muss vom Typ Array sein, boolean gegeben

Kann nicht herausfinden, wie die Parameter eingerichtet werden. Wie wird der Anruf erwartet? Jede Hilfe wird geschätzt.

Antwort

1

Um curl-Optionen übrigens einzustellen, sieht es so aus, als ob guzzle den Schlüssel "curl" als Konfigurationseinstellung erkennt, der ein Array von lockenbezogenen Konfigurationswerten enthält. So entspricht dem, was Sie wurden zunächst würden wie folgt

$client = new \Goutte\Client(); 

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

Nicht sicher aussehen zu erreichen versuchen, wie gut diese unterstützt wird, da es nicht überall in den guzzle docs angezeigt (und tun es auf diese Weise macht es aussehen wie es von CURL abhängig ist, was ich denke, ist nicht die Absicht zu verpissen. Daher der allgemeine Timeout-Config-Eintrag).

0

Was ich tun am Ende ist die folgende:

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

Die ‚überprüfen‘ => false, wenn die GuzzleClient Einleitung macht es die Zertifikate nicht überprüfen.