执行以下PHP代码时:
$m = new MongoClient("mongodb://localhost:27017");
我收到以下错误:
致命错误:Class' MongoClient'没有找到(...)
MongoDB扩展似乎已正确安装(我将php_mongodb.dll
复制到ext文件夹并更新了php.ini
)。
PHP似乎确认扩展程序正常运行,因为以下代码确认已加载:
echo extension_loaded("mongodb") ? "loaded\n" : "not loaded\n";
此外,phpinfo()
表示已加载mongodb扩展名。
更新:我的问题仍未解决。
phpinfo()
清楚地显示驱动程序已加载:
但我仍然收到同样致命的错误。
答案 0 :(得分:58)
类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 \驱动\管理器
从我阅读on their github repository release history开始,您尝试使用的类已经从mongodb 1.0.0
的版本中废弃,因此,在版本1.6.0
上,此类不是甚至是dll
的一部分。
derickr于4月16日发表评论
MongoClient是旧遗产中的一个类 驱动程序,并不应该在这一个。新的驱动程序 有\ MongoDB \ Driver \ Manager,以及附带的库 \ MongoDB的\客户端。
您需要安装旧的旧版扩展程序(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
以下是the replacement class documentation以及应该取代您的代码片段:
$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");
另一种方式,正如上面引用的MongoDB成员所建议的那样,使用此pecl扩展名:https://pecl.php.net/package/mongo而不是https://pecl.php.net/package/mongodb,但请注意那里的警告:
此软件包已被取代,但仍会针对错误和安全修复程序进行维护。