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

时间:2016-01-05 04:20:42

标签: linux mongodb php-7

在这里,我发现了一个奇怪的情况。我一直在项目中使用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而不是我的发行版包管理器安装它,情况与上面描述的相同。

所以这里有一个快速概述的情况:

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

其他可能有用的信息:

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

1 个答案:

答案 0 :(得分:5)

我找到了答案。

课程已经改变。它不再是\MongoClient,现在是\MongoDB\Driver\Manager

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

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