błąd cURL 60: certyfikat SSL prblm: nie można uzyskać lokalnego certyfikatu wystawcy [duplikat]

To pytanie ma już odpowiedź tutaj:

Chcę zebrać listę filmów przesłanych na określony kanał za pomocą interfejsu API danych YouTube. Jednak przed wdrożeniem online staram się uruchomić mój kod w środowisku offline (Wampserver, PHP 5.5.12, Apache 2.4.9). Używam następującego kodu:

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);

Daje jednak następujący błąd:

[[3]}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)'

Próbowałem dodać najnowszą wersję cacert.pem jak większość tematów NA więc oferują jako rozwiązanie, jednak bezskutecznie.

Author: Machavity, 2016-02-26

8 answers

Jeśli korzystasz z windows xampp. Kradnę lepszą odpowiedź z tutaj , byłoby pomocne, jeśli Google pokaże ci to pytanie 1st.

  1. Pobierz i wyodrębnij dla cacert.pem here (a clean file format/data)

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

  2. Wstawić:

    C:\xampp\php\extras\ssl\cacert.pem

  3. Dodaj tę linię do swojego php.ini

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

  4. Uruchom ponownie serwer WWW / apache

 68
Author: Phung D. An,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:45

Widząc, że używam lokalnego środowiska, mogę bezpiecznie wyłączyć SSL, co zrobiłem za pomocą następującego:

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

Gdzie $client jest moim Google_Client ().

 25
Author: Sjors Hijgenaar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-01 08:25:26
$guzzleClient = new \GuzzleHttp\Client(['verify' => false]);

Wersja 6

Możesz odnieść się do dokumentów Guzzle na

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

 8
Author: lijinma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-16 02:47:16

Pracuję z xamps nic z powyższych nie działało dla mnie

Próbowałem tego i zadziałało

  1. otwórz vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php

I zmień to

$conf[CURLOPT_SSL_VERIFYHOST] = 2;
$conf[CURLOPT_SSL_VERIFYPEER] = true;

Do tego

$conf[CURLOPT_SSL_VERIFYHOST] = 0;
$conf[CURLOPT_SSL_VERIFYPEER] = FALSE;

Jest to rozwiązanie tymczasowe, jeśli zaktualizujesz ten plik, zmiany zostaną utracone

 2
Author: Abdalla Mohamed Aly Ibrahim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-24 08:25:29

PCI-DSS 3.1 wymaga całego SSL tylko do TLS 1.2, więc wielu dostawców po prostu wyłącza wszystko oprócz TLS 1.2. Natrafiłem na tego typu problem, w którym CURL zauważył, że nie udało się obniżyć wersji uścisków dłoni jako nie udało się zweryfikować certyfikatu SSL. Spróbuj znaleźć, gdzie twój kod wykonuje wywołanie CURL i dodaj tę linię (pamiętaj, aby zastąpić $ch dowolną klamką CURL używaną przez Twój kod)

curl_setopt($ch, CURLOPT_SSLVERSION, 6);  // Force TLS 1.2
 0
Author: Machavity,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-25 21:29:38

Jeśli chodzi o istotę rozwoju i testowania, masz dwie opcje szybkiej naprawy

  1. Użyj
$client = new GuzzleHttp\Client();
$request = $client->request('GET',$url, ['verify' => false]); //where $url is your http address
  1. follow @ Pham Huy Anh odpowiedź jest powyżej to zrób to
$client = new GuzzleHttp\Client();
$request = $client->request('GET',$url, ['verify' => 'C:\xampp\php\extras\ssl\cacert.pem']);
Mam nadzieję, że to komuś pomoże.
 0
Author: wale rvp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 11:48:31

U mnie też zadziałało ściągając cert z link https://gist.github.com/VersatilityWerks/5719158/download wtedy save it in C:\xampp\php\extras\ssl następnie Edytuj php.ini. Aby uzyskać Php.ini szybko zobacz poniższy rysunek wpisz tutaj opis obrazka

Następnie zatrzymaj się i ponownie uruchom apache. udało się !!!

 0
Author: kimoduor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-03 00:07:49
$guzzleClient = new \GuzzleHttp\Client(['verify' => false]);
 -2
Author: abbas waranlu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-21 23:11:28