我想使用 YouTube 数据 API 收集在特定频道上传的视频列表。但是,在实现在线之前,我正在尝试让我的代码在离线环境(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的Windows上,我从这里窃取了一个更好的答案,如果谷歌先向你展示这个问题会很有帮助。
-
在此处下载并提取cacert.pem(干净的文件格式/数据)
https://curl.haxx.se/docs/caextract.html
-
把它放在:
C:\xampp\php\extras\ssl\cacert.pem
-
将此行添加到您的 php 中.ini
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
-
重新启动您的网络服务器/Apache
看到我使用的是本地环境,我可以安全地禁用SSL,我使用以下方法执行此操作:
$guzzleClient = new GuzzleHttpClient(array( 'curl' => array( CURLOPT_SSL_VERIFYPEER => false, ), ));
$client->setHttpClient($guzzleClient);
$client
在哪里是我的Google_Client()。
$guzzleClient = new GuzzleHttpClient(['verify' => false]);
咕噜咕噜版本6
您可以参考Guzzle Docs
http://docs.guzzlephp.org/en/latest/request-options.html#verify
我使用 xamps 以上任何内容都对我不起作用
我试过这个,它有效
- 打开
vendorguzzlehttpguzzlesrcHandlerCurlFactory.php
并改变这一点
$conf[CURLOPT_SSL_VERIFYHOST] = 2;
$conf[CURLOPT_SSL_VERIFYPEER] = true;
对此
$conf[CURLOPT_SSL_VERIFYHOST] = 0;
$conf[CURLOPT_SSL_VERIFYPEER] = FALSE;
这是一个临时解决方案,如果您更新了此文件,更改将丢失
对于开发和测试的本质,您有两种快速修复选项
- 用
$client = new GuzzleHttpClient();
$request = $client->request('GET',$url, ['verify' => false]); //where $url is your http address
- 按照上面的@Pham惠英的答案然后这样做
$client = new GuzzleHttpClient();
$request = $client->request('GET',$url, ['verify' => 'C:xamppphpextrassslcacert.pem']);
希望它对某人有所帮助。
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
通过从 链接 https://gist.github.com/VersatilityWerks/5719158/download然后将其保存在 C:\xampp\php\extras\ssl 中然后编辑 php.ini。要获取 Php.ini请快速查看下图在此处输入图像描述
然后停止并重新启动您的 apache。 它工作得很好!!
$guzzleClient = new GuzzleHttpClient(['verify' => false]);