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

那么我发现这是一个奇怪的情况。 我一直在一个项目上使用PHP和MongoDB,并更新了相关的软件。 升级之后,我确实更新了新的conf文件,一切都很好 – 除了当我尝试使用MongoClient类时,我得到以下致命错误:

致命错误:未捕获错误:类'MongoClient'在/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并再次尝试。 没有骰子,仍然找不到MongoClient类。 所以我试图从pecl而不是我的发行版的包pipe理器来安装它,情况和上面描述的一样。


所以这里是一个简短的情况:

  • Linux内核4.3.3
  • PHP版本7.0.1
  • php-mongodb版本1.1.1
    • 是的, 1.1.1支持php7 。
  • 似乎configuration正确,mongodb已启用并显示在phpinfo()
  • 试过通过pecl和我的发行版软件包pipe理器来安装mongodb驱动程序。

其他信息可能是有用的:

  • MongoDB版本3.2.0
  • mongod正在运行
  • 也尝试重新启动,没有改变。

那么我找到了答案。

这个班已经改变了。 它不再是\MongoClient ,现在是\MongoDB\Driver\Manager

我需要的只是一个重构。 新的驱动程序被设计成一个低层次的驱动程序,用于填充用户空间库的高级功能,所以任何人升级到php7,确保你检查你会适应新的驱动程序,或用户空间图书馆存在,当你这样做。 希望这个问题/答案在未来有助于他人。

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