我使用MAMP作为本地开发环境。我想实施 Google 身份验证 - 但不断收到此 SSL 错误。
curl.cainfo ="C:/MAMP/bin/php/php7.4.1/extras/ssl/cacert.pem"
您知道如何在我的本地环境中传递此 SSL 错误吗?
这是代码:
$google_client = new \Google_Client();
$google_client->setClientId($clientID);
$google_client->setClientSecret($clientSecret);
$google_client->setRedirectUri($redirectUri);
$google_client->addScope("email");
$google_client->addScope("profile");
if($this->request->getVar('code')){
$token = $google_client->fetchAccessTokenWithAuthCode($this->request->getVar('code'));
if(!isset($token['error'])){
$google_client->setAccessToken($token['access_token']);
$this->session->set('access_token', $token['access_token']);
//get Google profile data
$google_service = new \Google_Service_Oatuth2($google_client);
$data = $google_service->userinfo->get();
print_r($data);
设置“curl.cainfo”的值对我没有帮助。 相反,我必须在 current php.ini 的“openssl”部分中设置值(使用命令“which php”在 shell 中查找当前的“php.ini”文件。):
取消注释并设置 openssl.cafile(路径适用于 MacOS):
openssl.cafile="/Applications/MAMP/Library/OpenSSL/certs/cacert.pem"
(按照建议下载 pem 文件 https://curl.se/docs/caextract.html )
更新 openssl.cnf 文件中 cacert.pem 的位置,使其指向从curl.se 获取的最新版本,你应该是对的。
@tFranz描述的解决方案效果很好!请注意,您还可以使用系统的证书文件而不是 MAMP 的证书文件。我就是这样做的:
$ openssl version -d
OPENSSLDIR: "/private/etc/ssl"
$ open /private/etc/ssl
cert.pem
文件。如果您有,可以将其添加到您的 php.ini
文件中:openssl.cafile="/private/etc/ssl/cert.pem"
确定您正在将文件位置添加到正确的 php version.ini 文件中。经过五个月的搜索和尝试多种解决方案后,我对我的计算机进行了更深入的研究。事实证明我至少有两个 php 文件实例: 应用程序/MAMP/bin/php/php8.1.13/conf/php.ini 应用程序/MAMP/conf/php8.1.13/php.ini
底线:非常确定您正在编辑正确的文件。
我在 MAMP 中所做的,考虑到生产运行正常,并且本地(MAMP)仅用于测试,就是禁用 SSL ,这使我能够继续前进。因此,如果这是您的情况,只需禁用它就会有所帮助。