2017-02-28 4 views
0

Guzzleを使用してWebページからデータを取得したいとします。私は、次のコードを書かれている:Guzzleを使用してリモートデータを取得する

<?php 

require_once 'vendor/autoload.php'; 

$client = new \GuzzleHttp\Client(['base_uri' => 'https://yandex.ru']); 

$response = $client->request('GET'); 

$body = $response->getBody(); 

echo $body; 

をしかし、私は私のローカルホスト上でこのコードを実行するとき、私は致命的なエラーを受け取ります。

Fatal error: Uncaught exception 'GuzzleHttp\Exception\RequestException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in C:\Xampp\htdocs\Guzzle\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:187 Stack trace: #0 C:\Xampp\htdocs\Guzzle\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\Xampp\htdocs\Guzzle\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\Xampp\htdocs\Guzzle\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #3 C:\Xampp\htdocs\Guzzle\vendor\guzzlehttp\guzzle in C:\Xampp\htdocs\Guzzle\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 187 

問題は、私のコードの最後の3行を削除すると正常に動作するため、問題は要求通りです。誰もが解決策を提案できますか? curl.cainfoとopenssl.cafile設定php.iniファイルの 性質は、彼らが無効になるように、あなたがSSLとの接続を作成することを可能にする任意の有効な証明書 を標的にしないと、このエラーが発生し

+0

defaultsをfalseに変更し、動作するかどうかを確認します。 **新しいGuzzleClient(['defaults' => [ 'verify' => false ]])** – Dimi

+0

私は試しましたが、役に立たない –

+0

'verify' => falseオプションを指定してみましたかリクエストレベルで? http://docs.guzzlephp.org/en/latest/request-options.html#verify – Gabriel

答えて

1

https://yandex.ruでは、sslで接続しますが、httpbin.orgでは接続しません。 SSL証明書の問題が発生しないのはこのためです。

解決策として、このarticleをお勧めします。

関連する問題