I want to collect a list of videos uploaded on a specific channel using the YouTube data API. However, before implementing online I am trying to get my code running on an offline environment (WAMPserver, PHP 5.5.12, Apache 2.4.9). I am using the following code:
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);
However it gives the following error:
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
)'
I have tried adding the latest version of cacert.pem
as most topics on SO offer as a solution, however to no avail.
Error “curl: (60) SSL certificate problem: unable to get local issuer certificate” can be seen when the SSL certificate on the server is not verified or properly configured.
When ssl certificate problem unable to get local issuer certificate error is caused by a self-signed certificate, the fix is to add the certificate to the trusted certificate store. Open the file ca-bundle. crt located in the directory above, then copy and paste the Git SSL certificate to the end of the file.
libcurl performs peer SSL certificate verification by default. This is done by using a CA certificate store that the SSL library can use to make sure the peer's server certificate is valid.
If you are on Windows using Xampp, I am stealing a better answer from here, would be helpful if Google shows you this question first.
Download and extract for cacert.pem here (a clean file format/data)
https://curl.haxx.se/docs/caextract.html
Put it in :
C:\xampp\php\extras\ssl\cacert.pem
Add this line to your php.ini
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
restart your webserver/Apache
Seeing I am using a local environment I can safely disable SSL, which i did using the following:
$guzzleClient = new \GuzzleHttp\Client(array( 'curl' => array( CURLOPT_SSL_VERIFYPEER => false, ), )); $client->setHttpClient($guzzleClient);
Where $client
is my Google_Client().
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With