2017-02-28 53 views
0

我想使用Guzzle從網頁獲取數據。我寫了下面的代碼:使用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 

問題是,當我刪除我的代碼的最後三行時,它運作良好,所以問題與請求。任何人都可以提出解決方案

+0

更改默認值驗證爲false,看看它是否工作。 **新的GuzzleClient(['defaults'=> [ 'verify'=> false ]]); ** – Dimi

+0

我剛試過,但沒有幫助 –

+0

您是否嘗試指定'verify'=> false選項在請求級別? http://docs.guzzlephp.org/en/latest/request-options.html#verify – Gabriel

回答

1

當curl.cainfo和openssl.cafile配置php.ini文件的 性質,不針對任何有效證書 ,讓您創建SSL連接,因爲他們將是無效的這個錯誤發生。

With https://yandex.ru您通過ssl連接,但不在httpbin.org的情況。這就是爲什麼你沒有得到SSL證書問題。

作爲解決方案,我向您推薦這款article