PHP MongoDB:致命错误:找不到类'MongoClient'

Tom*_*Tom 19 php mongodb

执行以下PHP代码时:

$m = new MongoClient("mongodb://localhost:27017");
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

致命错误:在(...)中找不到"MongoClient"类

MongoDB扩展似乎已正确安装(我将php_mongodb.dll复制到ext文件夹并更新了php.ini).

PHP似乎确认扩展正在运行,因为以下代码确认它已加载:

echo extension_loaded("mongodb") ? "loaded\n" : "not loaded\n";
Run Code Online (Sandbox Code Playgroud)

此外,还php_mongodb.dll显示已加载mongodb扩展名.

UPDATE

问题仍未解决.

php.ini 清楚地显示驱动程序已加载:

在此输入图像描述

但我仍然收到同样的致命错误.

β.ε*_*.βε 64

TL; DR

该类MongoClient是传统PECL软件包mongo的一部分,但不再是最新的mongodb软件包.

在MongoDB PHP驱动程序github repo上,关于版本1.0.0的发行说明,建议开发人员使用MongoDB\Driver\Manager而不是MongoClient

我们传统的mongo扩展的变化

最重要的是,遗留驱动程序的MongoClient,MongoDB和MongoCollection类已被MongoDB\Driver\Manager类废弃,它是用于连接和执行查询,命令和写入操作的新网关.

资料来源:https://github.com/mongodb/mongo-php-driver/releases/tag/1.0.0


在文档提示时,不推荐使用该类.

警告不推荐使用此扩展来定义此类.相反,应该使用MongoDB扩展.此类的替代方案包括:

  • MongoDB的\驱动程序\经理

资料来源:http://php.net/MongoClient


从我在github存储库发布历史中读到的内容来看,您尝试使用的类已经被淘汰,因为在您mongodb 1.0.0的版本1.6.0上,此类甚至dll不再是其中的一部分.

这个问题在他们的github上得到了证实

derickr于4月16日发表评论

MongoClient是来自旧版旧驱动程序的类,不应该在这个版本中可用.新驱动程序有\ MongoDB\Driver\Manager,并且随附的库有\ MongoDB\Client.

您需要安装旧的旧版扩展(pecl install mongo)并使用PHP 5.x,或更新代码以使用此新驱动程序的类,因为旧的驱动程序不适用于PHP 7.在http中有一个升级指南 : //mongodb.github.io/mongo-php-library/upgrade-guide/

资料来源:https://github.com/mongodb/mongo-php-driver/issues/300#issuecomment-210820288


以下是替换类文档以及应该替换您的代码片段:

$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");
Run Code Online (Sandbox Code Playgroud)

另一种方式,如这里上面引述的MongoDB的成员建议是使用此PECL扩展:https://pecl.php.net/package/mongo代替https://pecl.php.net/package/mongodb但也请注意那里的警告说:

此程序包已被取代,但仍会针对错误和安全修复程序进行维护.

  • 你是上帝送的! (2认同)