linux - PHP升级到7后,为什么不能使用mongodb驱动?

这是我发现的一个奇怪的情况。我一直在一个项目中同时使用 PHP 和 MongoDB,并更新了相关的软件。升级后,我确实确保更新了新的 conf 文件,一切都很好 --- 除了尝试使用 MongoClient 类时,我收到以下 fatal error :

Fatal error: Uncaught Error: Class 'MongoClient' not found in /srv/http/test.php

所以我的第一 react 是检查我的 /etc/php/php.ini 以确保正确包含 mongodb.so。我在其他 extension 行之后找到了它:

extension=mcrypt.so
extension=zip.so
extension=mongodb.so ; <--- here it is

检查后,我加载了一个快速的 phpinfo() 脚本来检查我是否使用了正确的 php.ini 文件,并确认我是。不仅如此,mongodb驱动似乎也被正确加载了!

Loaded Configuration File      /etc/php/php.ini
. . .
mongodb support                enabled
mongodb                        version      1.1.1
mongodb                        stability    stable
libmongoc                      version      1.3.1-dev
libbson                        version      1.3.0

所以我重新启动了 httpd 并再次尝试。没有骰子,仍然找不到 MongoClient 类。所以我尝试从pecl而不是我的发行版的包管理器安装它,情况和上面描述的一样。


所以这里是情况的简要介绍:

  • Linux 内核 4.3.3
  • PHP 版本 7.0.1
  • php-mongodb 1.1.1版
    • 是的,1.1.1 supports php7 .
  • 似乎配置正确,并且 mongodb 已启用并显示在 phpinfo() 中。
  • 尝试通过 pecl 和我的发行版的包管理器安装 mongodb 驱动程序。

其他可能有用的信息:

  • MongoDB 版本 3.2.0
  • mongod 正在运行
  • 也试过重启,没有变化。

最佳答案

我找到了答案。

类(class)已更改。它不再是 \MongoClient,现在是 \MongoDB\Driver\Manager

我需要的只是重构。新驱动程序被设计为一个低级驱动程序,用于填充用户空间库的高级功能,因此任何其他升级到 php7 的人,请确保您检查您是否对新驱动程序感到满意,或者用户空间当你这样做时,图书馆就存在了。希望这个问题/答案在未来对其他人有所帮助。

下面的评论员 ianaz 为 MongoDB 发布了这个优秀的用户空间库:http://mongodb.github.io/mongo-php-library/

https://stackoverflow.com/questions/34604088/

相关文章:

node.js - 关于 Mongoose 填充关系一个字符串字段

mongodb - 如何在 MongoDB 中获取(或聚合)数组的不同键

javascript - Passport 没有保持持久的登录 session

mongodb - 如何在 MongoDB 的单个集合中查找文档之间的集合交集?

java - MongoDb BSON 以 UTC 时间存储日期

node.js - MongoDB Aggregate 中的 Mongoose Virtuals

mongodb - Mongo在计算条件下排序

java - 使用 Spring Data 按提取的日期、月份和年份聚合项目组

mongodb - 查询以匹配包含点的多边形

angularjs - angularjs可以直接连接mongodb吗?