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

After upgrading PHP to version 7, why can't I use the mongodb driver?

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

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

所以我的第一直觉是检查我的 /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并再次尝试。没有骰子,还是找不到MongoClientclass。所以我尝试从 pecl 而不是我的发行版的包管理器安装它,情况与上述相同。


下面是情况的简要概述:

其他可能有用的信息:

好吧,我找到了答案。

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

我需要的只是重构。新驱动程序被设计为 lower-level 驱动程序,用于 high-level 功能,以填充用户空间库,因此任何其他升级到 php7 的人,请务必检查您是否会适应新的驱动程序,或者当你这样做时用户空间库存在。希望这 question/answer 对以后的其他人有所帮助。

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