这是我发现的一个奇怪的情况。我一直在一个项目中同时使用 PHP 和 MongoDB,并更新了相关的软件。升级后,我确实确保更新了新的 conf 文件,一切都很好 --- 除了尝试使用 MongoClient
类时,我收到以下 fatal error :
Fatal error: Uncaught Error: Class 'MongoClient' not found in /srv/http/test.php
所以我的第一 react 是检查我的 /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
而不是我的发行版的包管理器安装它,情况和上面描述的一样。
所以这里是情况的简要介绍:
phpinfo()
中。pecl
和我的发行版的包管理器安装 mongodb 驱动程序。其他可能有用的信息:
mongod
正在运行最佳答案
我找到了答案。
类(class)已更改。它不再是 \MongoClient
,现在是 \MongoDB\Driver\Manager
我需要的只是重构。新驱动程序被设计为一个低级驱动程序,用于填充用户空间库的高级功能,因此任何其他升级到 php7 的人,请确保您检查您是否对新驱动程序感到满意,或者用户空间当你这样做时,图书馆就存在了。希望这个问题/答案在未来对其他人有所帮助。
下面的评论员 ianaz 为 MongoDB 发布了这个优秀的用户空间库:http://mongodb.github.io/mongo-php-library/
https://stackoverflow.com/questions/34604088/