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

dot*_*ezz 5 linux php mongodb

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

致命错误:未捕获的错误:在 /srv/http/test.php 中找不到类“MongoClient”

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

extension=mcrypt.so
extension=zip.so
extension=mongodb.so ; <--- here it is
Run Code Online (Sandbox Code Playgroud)

选中后,我加载了一个快速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
Run Code Online (Sandbox Code Playgroud)

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


所以这里是情况的简要概述:

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

其他可能有用的信息:

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

dot*_*ezz 7

好吧,我找到了答案。

班级已更改。已经不是了\MongoClient,现在是\MongoDB\Driver\Manager

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

这是现在用于 PHP 的大型 Mongo 库之一:mongo-php-library