【问题标题】:MongoDB Exception: Server reports wire version 0, but version of libmongoc requires at least 3MongoDB 异常:服务器报告线版本 0,但 libmongoc 版本至少需要 3
【发布时间】:2018-10-05 16:20:13
【问题描述】:
Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: Server at localhost:27017 reports wire version 0, but this version of libmongoc requires at least 3 (MongoDB 3.0)

我有 PHP 7.0.13、MAMP 和 MongoDB。已安装 PHP 的 MongoDB 扩展。

我有以下几点:

<?php

ini_set('display_errors', 'On');
require 'vendor/autoload.php';
var_dump(extension_loaded('mongodb'));
echo phpversion('mongodb')."\n";

$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");

// Query Class
$query = new MongoDB\Driver\Query(array('age' => 30));

// Output of the executeQuery will be object of MongoDB\Driver\Cursor class
$cursor = $m->executeQuery('testDb.testColl', $query);

// Convert cursor to Array and print result
print_r($cursor->toArray());

?>

在这种情况下,“电线”指的是什么,有人有解决这个问题的方法吗?

【问题讨论】:

  • 您使用的是什么版本的 MongoDB 服务器?错误消息表明您的驱动程序至少需要 MongoDB 3.0,并且您的服务器似乎是旧版本或未知版本。

标签: php mongodb mamp libmongoc


【解决方案1】:

我在 Linux Mint 19 上遇到了问题(认为 Ubuntu 18+ 可能有同样的问题):

IP:27017 的服务器报告线版本 2,但此版本的 libmongoc 至少需要 3 (MongoDB 3.0)

正如消息所说 - 服务器驱动程序版本和我的不同。 发生这种情况是因为我使用以下命令安装了 php mongo 驱动程序:

sudo apt-get install php7.2-mongodb

解决方案是完全卸载php mongo驱动:

sudo apt-get remove --auto-remove php-mongodb

然后从Pecl mongodb php extension安装php-mongodb:

sudo pecl install mongodb-1.4.4

(如果遇到错误pecl: command not found,只需安装 PEAR 包即可使用pecl 安装程序。sudo apt-get update &amp;&amp; sudo apt-get install php-pear)

然后将下一行添加到您的 php.ini 文件中:

extension=mongodb.so

别忘了重新加载网络服务器:

sudo systemctl reload apache2

就是这样。一切都应该正常!

【讨论】:

  • 如果你需要为多个版本的 php 使用 pecl 安装 mongodb,安装过程有点复杂。简而言之,切换php版本,安装和备份lib,因为安装在另一个版本上会删除以前的版本。
  • 根据mongodb/mongo-php-library#569mongodb-1.5.0 是第一个提高其最低服务器版本要求的版本。我不确定 Linux Mint 19 中存在什么版本的驱动程序,但 Ubuntu 18.04 的 php7.2-mongodb 包是 1.3.x 并且不会遇到此异常。您的回答建议通过 PECL 安装的版本 1.4.4 也不会。也就是说,我认为最好的建议是升级 MongoDB 服务器(相当旧)而不是降级驱动程序。
  • 很遗憾,我没有机会升级版本。这就是为什么我应该降级版本以使应用程序正常工作。但当然,最好使用新版本。你是对的 =)
  • 原来我安装了多个版本的 mongodb,在重新安装最新版本之前我必须完全卸载这两个版本。谢谢!
  • 如果您之前使用 pecl 安装它,请执行以下操作:sudo pecl uninstall mongodb &amp;&amp; sudo pecl install mongodb-1.4.4
【解决方案2】:

我有一个带有 mongo 版本的 Raspberry Pi 3B。它运行的是旧版本的 MongoDB,所以我找到了一个同样旧版本的 pymongo,它可以工作。

mongo --version
MongoDB shell version: 2.4.14

min_wire_version 是在 Mongo 2.4.14 发布后的某个时间添加的,所以我只安装了同样旧的 pymongo 驱动程序。

pip install pymongo==2.4.2 为我工作。

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 2022-01-07
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    相关资源
    最近更新 更多