2016-10-04 4 views
0

Я хотел бы избавиться от этой ошибки. Я прочитал similar question где один ответ предложил, что я могу отключить проверку с помощью:cURL ошибка 60 при использовании GuzzleHttp

$client->setDefaultOption('verify', false); 

Моя точная ошибка:

Uncaught исключение 'GuzzleHttp \ Exception \ RequestException' с сообщением «Curl ошибки 60: Проблема сертификата SSL: невозможно получить сертификат локального эмитента (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html) 'в C: \ path \ guzzle \ src \ Handler \ CurlFactory.php: 187 Трассировка стека: # 0 C: \ path \ guzzle \ src \ Handler \ CurlFactory. php (150): GuzzleHttp \ Handler \ CurlFactory :: createRejection (Object (GuzzleHttp \ Handler \ EasyHandle), массив) # 1

C: \ path \ guzzle \ src \ Handler \ CurlFactory.php (103): GuzzleHttp \ Handler \ CurlFactory :: finishError (Object (GuzzleHttp \ Handler \ CurlHandler), Object (GuzzleHttp \ Handler \ EasyHandle), Object (GuzzleHttp) \ Handler \ CurlFactory)) # 2

C: \ path \ guzzle \ src \ Handler \ CurlHandler.php (43): GuzzleHttp \ Handler \ CurlFactory :: закончить (объект (GuzzleHttp \ Handler \ CurlHandler), объект (GuzzleHttp \ Handler \ EasyHandle), объект (GuzzleHttp \ Рука в C: \ путь \ жрать \ SRC \ Handler \ CurlFactory.php на линии 187

Я прочитал код всех этих линий, и нет ни одной переменной, как $client там, но я нашел эту функцию внутри CurlFactory.php. Обратите внимание, что файл CurlFactory.php не был создан мной.

public function release(EasyHandle $easy) 
{ 
    $resource = $easy->handle; 
    unset($easy->handle); 

    if (count($this->handles) >= $this->maxHandles) { 
     curl_close($resource); 
    } else { 
     // Remove all callback functions as they can hold onto references 
     // and are not cleaned up by curl_reset. Using curl_setopt_array 
     // does not work for some reason, so removing each one 
     // individually. 
     curl_setopt($resource, CURLOPT_HEADERFUNCTION, null); 
     curl_setopt($resource, CURLOPT_READFUNCTION, null); 
     curl_setopt($resource, CURLOPT_WRITEFUNCTION, null); 
     curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null); 
     curl_reset($resource); 
     $this->handles[] = $resource; 
    } 
} 

Могу ли я установить возможность отключения проверки здесь?

Я знаю, что не рекомендуется отключать проверку, но код предназначен для личного использования и для проверки чего-то. Это не проблема, если я отключу проверку. Вот код в моем фактическом файле PHP.

require('vendor/autoload.php'); 
use JonathanTorres\MediumSdk\Medium; 

$medium = new Medium('my-key'); 

$user = $medium->getAuthenticatedUser(); 
echo 'Authenticated user name is: ' . $user->name; 

Как вы можете видеть, я не использую cURL в своем коде где угодно. Параметры должны быть установлены внутри библиотеки где-нибудь. Можно ли отключить проверку в моем собственном файле вместо изменения исходного кода библиотеки?

ответ

1

Возможно, вы ищете вариант CURLOPT_SSL_VERIFYHOST. Если не указано, этот параметр по умолчанию имеет значение 2, что означает, что соединение не будет выполнено, если имя сертификата не совпадает с именем подключенного сервера. Установка этого значения в 0 означает, что имя хоста будет проигнорировано, и сертификат будет принят независимо от несоответствия имени. Обычно этого достаточно для решения проблем с самозаверяющими сертификатами.

Вариант 1 - это устаревшая опция, которая использовалась для отладки, но устарела и не должна использоваться.

Это может быть связано с тем, что завиток не может найти корневой комплект сертификатов. Вы можете download the bundle from the curl site и сохранить его в папку на сервере, а затем добавьте ссылку на него в вашем php.ini так: curl.cainfo = Папку \ cacert.pem

Это также может быть связано с версией Guzzle, я нашел ссылки на это, проблема с Guzzle versions later than 4. Не уверен, что это практично для вас попробовать.

+0

Спасибо барбекю.:) Я попытался установить эту опцию, указав ее под другими параметрами ниже 'curl_reset ($ resource);' like this 'curl_setopt ($ resource, CURLOPT_SSL_VERIFYHOST, 0);' но ошибка не исчезла. –

+0

Я не знаю, что жужжание, но большинство проблем с сертификатом с завиванием либо устраняются путем отключения проверки хоста, либо путем установки корневого пакета сертификатов. Если ни один из этих вариантов не помогает, это, вероятно, проблема, связанная с жульничеством. , – barbecue

+0

Спасибо за ссылку, это помогло мне решить проблему. :) –

Смежные вопросы