php 调用未定义的方法MongoDB\驱动程序\服务器::executeReadCommand()

ca1c2owp  于 2022-12-21  发布在  PHP
关注(0)|答案(2)|浏览(106)

我们的应用程序运行在一个(非常)旧的MongoDB2.4集群上--目前,还不可能将其升级到较新的版本。
我们正在努力将我们的应用程序从PHP5.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
b91juud3

b91juud31#

嗯,当然,少了点什么!
就在发布这个之后,我注意到我完全忘记了在composer.json中声明mongodb/mongodb的版本,所以composer总是下载最新版本的库,也就是1.3.0
mongodb/mongodb也不赞成在其1.3.0 release中支持2.4
我可以通过在composer.json中将mongodb\mongodb的版本锁定为1.2.0来修复此问题:
"mongodb/mongodb": "1.2.0"
希望这对可能面临同样问题的人有所帮助。
干杯

0yg35tkg

0yg35tkg2#

您应该检查mongo db扩展是否已安装并且可用。使用pecl安装它:

// Old version
sudo pecl install mongo

// New version
sudo pecl install mongodb

您应该在php.ini中添加"extension = mongodb.so"

相关问题