为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
Cats萌萌 2023-04-21 13:28:15
我正在尝试将php与firebase一起使用安装包后“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
查看完整描述

4 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

因为你没有启用 curl.cainfo

//img1.sycdn.imooc.com/64421f1d0001da2b06530120.jpg

您可以将 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


查看完整回答
反对 回复 2023-04-21
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

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



查看完整回答
反对 回复 2023-04-21
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

在我的本地机器上工作时,这就是我解决这个问题的方法,

cacert.pem文件

将文件复制到php 位置,即如果使用 Wamp

C:\wamp64\bin\php\cacert.pem

或者如果使用 Xampp

C:\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"

或者使用 Xampp

C:\xampp\php

编辑行:

curl.cainfo = "C:\xampp\php\cacert.pem"

然后重新启动您的 Wamp 或 Xampp 服务,这应该可以解决问题。


查看完整回答
反对 回复 2023-04-21
?
白板的微信

TA贡献1883条经验 获得超3个赞

根据curl(1)手册页,错误代码 35 是 SSL 握手失败:

EXIT CODES
  ... 
   35     SSL connect error. The SSL handshaking failed.

您可以尝试暂时禁用 SSL 证书验证,看看是否可以解决问题。

curl_setopt($handle, CURLOPT_VERIFYPEER, 0); // ***JUST A TEST! DO __NOT__ PUSH THIS TO PRODUCTION!***

如果这确实解决了问题,原因可能是两种最常见的 SSL 握手失败之一:

  1. 主机上缺少 CA 证书,这意味着 cURL 无法验证证书的真实性。

  2. 您要连接的机器出示的证书已过期。

如果这不能解决问题,原因可能是:

  1. 您的机器和远程机器无法协商密码套件和/或 SSL 版本。

  2. 任意数量的其他 SSL 错误。


查看完整回答
反对 回复 2023-04-21
  • 4 回答
  • 0 关注
  • 258 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信