使用 firebase php 时出现错误,即 cURL 错误 35

我正在尝试将phpfirebase一起使用

安装包后“composer require kreait/firebase-php ^4.0”

并调整我的火力基地

它告诉我那个错误:

致命错误:未捕获的 GuzzleHttp\Exception\ConnectException:cURL 错误 35:OpenSSL SSL_connect:SSL_ERROR_SYSCALL 连接到 ff64t.firebaseio.com:443(参见https://curl.haxx.se/libcurl/c/libcurl-errors.html) 在 C:\xampp\htdocs\dashboard\webservice\php_firebase\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:200 堆栈跟踪:#0 C:\xampp\htdocs\dashboard\webservice\php_firebase\vendor\ guzzlehttp\guzzle\src\Handler\CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(对象(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp\htdocs\dashboard\webservice\php_firebase\供应商\guzzlehttp\guzzle\src\Handler\CurlFactory.php(105):GuzzleHttp\Handler\CurlFactory::finishError(对象(GuzzleHttp\Handler\CurlHandler),对象(GuzzleHttp\Handler\EasyHandle),对象(GuzzleHttp\Handler\ CurlFactory)) #2 C:\xampp\htdocs\dashboard\webservice\php_firebase\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(对象(GuzzleHttp\Handler\ CurlHandler),对象(C 中的 Guz:\xampp\htdocs\dashboard\webservice\php_firebase\vendor\kreait\firebase-php\src\Firebase\Exception\ApiException.php 第 40 行

我的 PHP 代码非常简单:

<?php

 require_once './vendor/autoload.php';

 use Kreait\Firebase\Factory;

     use Kreait\Firebase\ServiceAccount;

 $serviceAccount = ServiceAccount::fromJsonFile(__DIR__.'/secret/clone-7ef2-642f.json');

 $firebase = (new Factory)

    ->withServiceAccount($serviceAccount)

    //->withDatabaseUri("https://ff64t.firebaseio.com")

    ->create();

    $database = $firebase->getDatabase();

    $ref = $database->getReference('users');

    $res = $ref->getChild('1z7ni171Hwgq8fdnandRNjfxBfw2')->getChild('name')->getValue();

    var_dump($res);


?>

所以任何人都遇到过类似的事情以及如何解决这个问题

我尝试了很多解决方案,但没有一个有效。

我尝试重新安装 curl 并将其像系统变量一样放置我也尝试添加

curl_setopt($easy->handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

使 curl 处理 IPV4...它给了我一个新错误,即:

我还从 phpinfo 检查了 curl 支持和 ssl


Cats萌萌
浏览 259回答 4
4回答

RISEBY

因为你没有启用 curl.cainfo您可以将 cainfo.pem 添加到 php.ini [curl]; A default value for the CURLOPT_CAINFO option. This is required to be an; absolute path.curl.cainfo=/etc/ssl/certs/cacert.pem

拉莫斯之舞

我本地只把DNS改成8.8.8.8就解决了

潇潇雨雨

在我的本地机器上工作时,这就是我解决这个问题的方法,cacert.pem文件将文件复制到php 位置,即如果使用 WampC:\wamp64\bin\php\cacert.pem或者如果使用 XamppC:\xampp\php\cacert.pem****请注意使用您环境中的路径。然后如果使用 Wamp 编辑apache 文件夹中的php.ini文件即C:\wamp64\bin\apache\apache2.4.39\bin编辑行:[curl]; A default value for the CURLOPT_CAINFO option. This is required to be an; absolute path.curl.cainfo = "C:\wamp64\bin\php\cacert.pem"或者使用 XamppC:\xampp\php编辑行:curl.cainfo = "C:\xampp\php\cacert.pem"然后重新启动您的 Wamp 或 Xampp 服务,这应该可以解决问题。

白板的微信

根据curl(1)手册页,错误代码 35 是 SSL 握手失败:EXIT&nbsp;CODES &nbsp;&nbsp;...&nbsp; &nbsp;&nbsp;&nbsp;35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSL&nbsp;connect&nbsp;error.&nbsp;The&nbsp;SSL&nbsp;handshaking&nbsp;failed.您可以尝试暂时禁用 SSL 证书验证,看看是否可以解决问题。curl_setopt($handle,&nbsp;CURLOPT_VERIFYPEER,&nbsp;0);&nbsp;//&nbsp;***JUST&nbsp;A&nbsp;TEST!&nbsp;DO&nbsp;__NOT__&nbsp;PUSH&nbsp;THIS&nbsp;TO&nbsp;PRODUCTION!***如果这确实解决了问题,原因可能是两种最常见的 SSL 握手失败之一:主机上缺少 CA 证书,这意味着 cURL 无法验证证书的真实性。您要连接的机器出示的证书已过期。如果这不能解决问题,原因可能是:您的机器和远程机器无法协商密码套件和/或 SSL 版本。任意数量的其他 SSL 错误。
打开App,查看更多内容
随时随地看视频慕课网APP