Intereting Posts
Как сортировать по номерам сначала с Oracle SQL-запроса? 301 перенаправление для старых страниц веб-сайта с помощью codeIgniter Как можно вставить формулу в лист excel, используя phpexcel Как исправить строки с двойным кодированием UTF-8, находящиеся в полях MySQL utf8_general_ci? Использование GD для изменения цвета одной цветовой формы на прозрачном фоне при сохранении прозрачности Как получить общее количество элементов в таблице DynamoDB? проблема для получения изображения в php с загрузкой скрипта ANDROID Регистрация и регистрация в Laravel на той же странице в Laravel 5.2 Автоматический вход на текущий веб-сайт, если пользователь вошел в систему на другом веб-сайте Группировка многомерного массива PHP и вычисление суммы определенного ключа для каждого элемента массива embed from symfony 2.3.8 – Нуль, если allow_add истинно ob_start () и ob_flush () не работают php – вставить переменную в строку эха Файл изображения Android, отправленный в файл загрузки файла php, – это тип приложения / октета-потока, а не изображение / jpeg? лучший способ скопировать новые записи из одной базы данных в другую

cURL error 60: SSL-сертификат prblm: невозможно получить сертификат локального эмитента

Я хочу собрать список видео, загруженных по определенному каналу, используя API данных YouTube. Однако перед реализацией онлайн я пытаюсь запустить мой код в автономной среде (WAMPserver, PHP 5.5.12, Apache 2.4.9). Я использую следующий код:

require_once 'google-api-php-client-2.0.0-RC5/vendor/autoload.php'; $client = new Google_Client(); $client->setApplicationName("SRC_Thor"); $client->setDeveloperKey("xxxxxxxxxxx"); $youtube = new Google_Service_YouTube($client); $channelResponse = $youtube->channels->listChannels('contentDetails', []); var_dump($channelResponse); 

Однако это приводит к следующей ошибке:

Неустранимая ошибка: исключение исключения «GuzzleHttp \ Exception \ RequestException» с сообщением «ошибка cURL 60: проблема с сертификатом SSL: не удается получить сертификат локального эмитента» (см. http://curl.haxx.se/libcurl/c/libcurl-errors.html

Я попытался добавить последнюю версию cacert.pem поскольку большинство тем на SO предлагают в качестве решения, однако безрезультатно.

Если вы находитесь на окнах xampp. Я краду лучший ответ отсюда , было бы полезно, если Google покажет вам этот вопрос.

  1. скачать и извлечь для cacert.pem здесь (чистый формат / данные файла)

    https://gist.github.com/VersatilityWerks/5719158/download

  2. поместите его в:

    C: \ XAMPP \ PHP \ Extras \ SSL \ cacert.pem

  3. Добавьте эту строку в свой php.ini

    curl.cainfo = "C: \ xampp \ php \ extras \ ssl \ cacert.pem"

  4. перезагрузите веб-сервер / apache

Видя, что я использую локальную среду, я могу безопасно отключить SSL, который я использовал, используя следующее:

 $guzzleClient = new \GuzzleHttp\Client(array( 'curl' => array( CURLOPT_SSL_VERIFYPEER => false, ), )); $client->setHttpClient($guzzleClient); 

Где $client – мой Google_Client ().

 $guzzleClient = new \GuzzleHttp\Client(['verify' => false]); 

Guzzle версия 6

Вы можете сослаться на документы Guzzle Docs на

http://docs.guzzlephp.org/en/latest/request-options.html#verify

PCI-DSS 3.1 требует, чтобы все SSL только TLS 1.2, поэтому многие провайдеры просто поворачивают все, кроме TLS 1.2. Я столкнулся с этим типом проблемы, когда CURL видел отказ от отмены рукопожатий как неспособность проверить сертификат SSL. Попробуйте найти, где ваш код выполняет вызов CURL, и добавьте эту строку (обязательно замените $ch на все, что CURL обрабатывает ваш код)

 curl_setopt($ch, CURLOPT_SSLVERSION, 6); // Force TLS 1.2 

для сущности разработки и тестирования, у вас есть два варианта быстрого решения

  1. использование
 $client = new GuzzleHttp\Client(); $request = $client->request('GET',$url, ['verify' => false]); //where $url is your http address 
  1. следуйте @Pham Huy Anh ответ выше, тогда сделайте это
 $client = new GuzzleHttp\Client(); $request = $client->request('GET',$url, ['verify' => 'C:\xampp\php\extras\ssl\cacert.pem']); 

Надеюсь, это поможет кому-то.

он также работал для меня, загрузив сертификат по ссылке https://gist.github.com/VersatilityWerks/5719158/download, затем сохраните его в C: \ xampp \ php \ extras \ ssl, затем отредактируйте php.ini. Чтобы получить Php.ini быстро, см. Рисунок ниже, введите описание изображения здесь

Затем STOP и снова запустите свой apache. он работал хорошо !!!

 $guzzleClient = new \GuzzleHttp\Client(['verify' => false]);