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());
?>
在这种情况下,“线”指的是什么?有人对此问题有解决方案吗?
答案 0 :(得分:6)
我在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 && sudo apt-get install php-pear
)
之后,将下一行添加到您的php.ini
文件中:
extension=mongodb.so
别忘了重新加载Web服务器:
sudo systemctl reload apache2
就是这样。一切都会正常!
答案 1 :(得分:0)
我有一个带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
为我工作。