MongoDB异常:服务器报告的连线版本为0,但libmongoc的版本至少需要3

Wei*_*ali 5 php mamp mongodb libmongoc

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)
Run Code Online (Sandbox Code Playgroud)

我有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());

?>
Run Code Online (Sandbox Code Playgroud)

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

Evg*_*kov 8

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

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

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

sudo apt-get install php7.2-mongodb
Run Code Online (Sandbox Code Playgroud)

解决方案是完全卸载PHP蒙戈驱动程序:

sudo apt-get remove --auto-remove php-mongodb
Run Code Online (Sandbox Code Playgroud)

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

sudo pecl install mongodb-1.4.4
Run Code Online (Sandbox Code Playgroud)

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

之后,将下一行添加到php.ini文件中:

extension=mongodb.so
Run Code Online (Sandbox Code Playgroud)

不要忘记重新加载Web服务器:

sudo systemctl reload apache2
Run Code Online (Sandbox Code Playgroud)

而已。一切都会正常!

  • 如果之前你用 pecl 安装过,请执行以下操作:`sudo pecl uninstall mongodb &amp;&amp; sudo pecl install mongodb-1.4.4` (2认同)