调用未定义的方法MongoDB \ Driver \ Server :: executeReadCommand()

时间:2018-02-15 13:01:00

标签: php mongodb composer-php php-7

我们的应用程序在(非常)旧的MongoDB 2.4群集上运行 - 目前,无法将其升级到新版本。

我们正在努力将我们的应用程序从PHP 5.6升级到PHP7,一切都很顺利,直到the version 1.4.0 of the mongodb driver deprecated MongoDB 2.4 support

由于我们需要支持2.4,因此我尝试将驱动程序版本回滚到1.3.01.3.2,并且它们都抛出了这个错误:

Call to undefined method MongoDB\Driver\Server::executeReadCommand()

executeReadCommand()似乎来自1.4.0,但如果我使用版本1.3.0,该怎么办呢?我错过了什么吗?

PHP配置:

PHP 7.1.12 (cli) (built: Dec  1 2017 01:55:23) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.12, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

Mongo驱动程序配置:

root@6f40fb118d2d:/var/www/app# php --ri mongodb | grep version
MongoDB extension version => 1.3.0
libbson bundled version => 1.8.0
libmongoc bundled version => 1.8.0

1 个答案:

答案 0 :(得分:2)

嗯,当然,有些东西不见了!

发布此消息后,我发现我完全忘记在mongodb/mongodb内声明composer.json的版本,因此作曲家总是下载该库的最新版本,即1.3.0

mongodb/mongodb也弃用1.3.0 release中对2.4的支持。

我能够通过将mongodb\mongodb的版本锁定到1.2.0中的composer.json来解决问题:

"mongodb/mongodb": "1.2.0"

希望这有助于可能面临同样问题的人。

干杯