将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并再次尝试。没有骰子,还是找不到MongoClient
class。所以我尝试从 pecl
而不是我的发行版的包管理器安装它,情况与上述相同。
下面是情况的简要概述:
- Linux 内核 4.3.3
- PHP 版本 7.0.1
- php-mongodb版本1.1.1
- 似乎配置正确,mongodb 已启用并显示在
phpinfo()
中。
- 尝试通过
pecl
和我的发行版的包管理器安装 mongodb 驱动程序。
其他可能有用的信息:
- MongoDB 版本 3.2.0
mongod
是 运行
- 也试过重启,没有变化。
好吧,我找到了答案。
class 已更改。它不再是 \MongoClient
,现在是 \MongoDB\Driver\Manager
我需要的只是重构。新驱动程序被设计为 lower-level 驱动程序,用于 high-level 功能,以填充用户空间库,因此任何其他升级到 php7 的人,请务必检查您是否会适应新的驱动程序,或者当你这样做时用户空间库存在。希望这 question/answer 对以后的其他人有所帮助。
下面的评论者 ianaz 为 MongoDB 发布了这个很好的用户空间库:http://mongodb.github.io/mongo-php-library/
我发现了一个奇怪的情况。我一直在一个项目中同时使用 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并再次尝试。没有骰子,还是找不到MongoClient
class。所以我尝试从 pecl
而不是我的发行版的包管理器安装它,情况与上述相同。
下面是情况的简要概述:
- Linux 内核 4.3.3
- PHP 版本 7.0.1
- php-mongodb版本1.1.1
- 似乎配置正确,mongodb 已启用并显示在
phpinfo()
中。 - 尝试通过
pecl
和我的发行版的包管理器安装 mongodb 驱动程序。
其他可能有用的信息:
- MongoDB 版本 3.2.0
mongod
是 运行- 也试过重启,没有变化。
好吧,我找到了答案。
class 已更改。它不再是 \MongoClient
,现在是 \MongoDB\Driver\Manager
我需要的只是重构。新驱动程序被设计为 lower-level 驱动程序,用于 high-level 功能,以填充用户空间库,因此任何其他升级到 php7 的人,请务必检查您是否会适应新的驱动程序,或者当你这样做时用户空间库存在。希望这 question/answer 对以后的其他人有所帮助。
下面的评论者 ianaz 为 MongoDB 发布了这个很好的用户空间库:http://mongodb.github.io/mongo-php-library/