Я хочу собрать список видео, загруженных по определенному каналу, используя 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 покажет вам этот вопрос.
скачать и извлечь для cacert.pem здесь (чистый формат / данные файла)
поместите его в:
C: \ XAMPP \ PHP \ Extras \ SSL \ cacert.pem
Добавьте эту строку в свой php.ini
curl.cainfo = "C: \ xampp \ php \ extras \ ssl \ cacert.pem"
перезагрузите веб-сервер / 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
для сущности разработки и тестирования, у вас есть два варианта быстрого решения
- использование
$client = new GuzzleHttp\Client(); $request = $client->request('GET',$url, ['verify' => false]); //where $url is your http address
- следуйте @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]);