【问题标题】:I have an error while using firebase php which is cURL error 35使用 firebase php 时出现错误,即 cURL 错误 35
【发布时间】:2020-09-15 22:46:24
【问题描述】:

我正在尝试将 php 与 firebase

一起使用

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

并调整我的火力基地

它向我显示了那个错误:

致命错误:未捕获的 GuzzleHttp\Exception\ConnectException:cURL 错误 35:OpenSSL SSL_connect:SSL_ERROR_SYSCALL 连接到 C:\xampp\htdocs\dashboard\webservice\php_firebase 中的 ff64t.firebaseio.com:443(请参阅 https://curl.haxx.se/libcurl/c/libcurl-errors.html) \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(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp\htdocs\dashboard\webservice\php_firebase\vendor\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(Object(GuzzleHttp\Handler\CurlHandler), Object(Guz in C:\xampp\htdoc s\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...它给了我一个新错误:

致命错误:未捕获的 GuzzleHttp\Exception\RequestException:cURL 错误 0:cURL 请求重试了 3 次,但未成功。失败的最可能原因是 cURL 无法回退请求的正文,随后的重试导致相同的错误。打开调试选项,看看出了什么问题。有关更多信息,请参阅https://bugs.php.net/bug.php?id=47204。 (参见https://curl.haxx.se/libcurl/c/libcurl-errors.html)在 C:\xampp\htdocs\dashboard\webservice\firebase_php\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:201 堆栈跟踪:#0 C:\xampp\htdocs\dashboard\webservice \firebase_php\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(537): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), 数组) #1 C:\xampp\htdocs\dashboard \webservice\firebase_php\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(152):GuzzleHttp\Handler\CurlFactory::retryFailedRewind(对象(GuzzleHttp\Handler\CurlHandler),对象(GuzzleHttp\Handler\EasyHandle),数组) #2 C:\xam 在 C:\xampp\htdocs\dashboard\webservice\firebase_php\vendor\kreait\firebase-php\src\Firebase\Exception\ApiException.php 在第 40 行

我还检查了 phpinfo 中的 curl 支持和 ssl

【问题讨论】:

  • 嗨!如果您能告诉我们您已经尝试过的一些解决方案,那就太好了。
  • 好的,我会在帖子中添加它们
  • firebase-php.readthedocs.io/en/5.3.0/… - 另外,如果您至少使用 PHP 7.2,您应该迁移到 SDK 的 5.x 版????
  • 我尝试了最新的SDK版本,但它不起作用

标签: php firebase


【解决方案1】:

根据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 错误。

【讨论】:

  • 我试图执行这个很好的“composer config -g -- disable-tls true”,但错误仍然存​​在
【解决方案2】:

因为你没有启用 curl.cainfo

您可以将 cainfo.pem 添加到 php.ini (http://curl.haxx.se/ca/cacert.pem)

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo=/etc/ssl/certs/cacert.pem

【讨论】:

    【解决方案3】:

    在我的本地,我只是将DNS更改为8.8.8.8来解决它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 2019-02-13
      相关资源
      最近更新 更多