Google Php Oauth登录错误无法找到系统CA捆绑包

时间:2015-11-20 23:23:49

标签: php oauth ssl-certificate ca

我正在关注该示例,但收到错误 $客户端 - >认证($ _ GET [ '代码']); 正在返回代码值,但不会进行身份验证。错误是

致命错误:未捕获的异常'RuntimeException',消息'在任何公共系统位置都找不到系统CA包。早于5.6的PHP版本未正确配置为默认使用系统的CA捆绑包。为了验证对等证书,您需要将磁盘上的路径提供给“验证”请求选项的证书包:http://docs.guzzlephp.org/en/latest/clients.html#verify。如果您不需要特定的证书包,那么Mozilla提供了一个常用的CA包,可以在这里下载(由cURL的维护者提供):https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt。在磁盘上有可用的CA捆绑包之后,可以将'openssl.cafile'PHP ini设置设置为指向文件的路径,从而省略'verify'请求选项。有关详细信息,请参阅http://curl.haxx.se/docs/sslcerts.html。在/base/data/home/apps/s~solomon-1/1.388711045841969234/google-api-php-client/vendor/guzzlehttp/ringphp/src/Client/Cli in / base / data / home / apps / s~solomon第51行的-1 / 1.388711045841969234 / google-api-php-client / vendor / guzzlehttp / guzzle / src / Exception / RequestException.php

...

2 个答案:

答案 0 :(得分:5)

查看GoogleGuzzle's代码,您可能需要在设置Google客户端时以及在authenticate()通话之前执行以下操作,以指定可以找到证书包的位置:

$client->setHttpClient(new GuzzleHttp\Client(['verify'=>'path\to\your\cert-bundle']));

这将覆盖默认行为,并允许您指定捆绑包的位置。

您还可以通过将verify设置为false来测试这是正确的方向:

$client->setHttpClient(new GuzzleHttp\Client(['verify'=>false]));

这基本上告诉curl不要验证主机和同行。

答案 1 :(得分:2)

App Engine Php要求使用ini行在根目录下的php.ini文件中明确启用curl extension =“curl.so” 小心一下这些版本,混淆了一组oauth,我发现了一个更新,它只在我认为是最新的下载自述文件中提到过。