我在cPanel / WHM CentOS服务器上安装了MongoDB。 我安装了PHP驱动程序。 我打开了27017端口。
这有效$m = new MongoDB\Driver\Manager();
这些不起作用:
$m = new Mongo();
$m = new MongoClient();
两者都会产生Fatal error: Class 'Mongo' not found in ...
和Fatal error: Class 'MongoClient' not found in ...
。
有谁知道为什么?
不重复。 SO Q适用于Windows机器。我的服务器是Linux / CentOS
来自我的托管服务提供商的系统管理员
root @ host [〜/ support / 642192] #pecl search mongo 检索数据... 0%
包装稳定/(最新)本地 mongo 1.6.12(稳定)MongoDB数据库驱动程序(旧版)
答案 0 :(得分:1)
您似乎尚未启用或安装php_mongo扩展程序。 启用后重新启动apache并检查phpinfo()以查看其是否正确启用。
答案 1 :(得分:1)
您不能将以下类与新的mongodb
驱动程序一起使用:
$m = new Mongo();
$m = new MongoClient();
这对应于旧版mongo
驱动程序。相反,您应该通过MongoDB PHP库使用MongoDB\Client
。
好的。我在这个故事上也失去了一些头发,因为关于Mongo和PHP的文档非常令人困惑。然后选择是生气,秃头,或两者兼而有之。但我找到了勇气,终于明白了。所以这可能对你有帮助。
首先,您必须说明您使用的MongoDB 驱动程序:mongo
(旧版)或mongodb
(新版)。请注意较小的情况。第一个混淆源,mongo
驱动程序有时被称为MongoDB(传统)PHP驱动程序。
https://docs.mongodb.com/ecosystem/drivers/php/
第二个来源混淆,版本号不合逻辑,因为mongo
驱动程序有1.5,1.6,但mongodb
从1.0开始。所以,向前,但向后,它只是疯了...... Imo他们应该从2.0开始!
驱动程序的选择取决于您的PHP版本:
mongo
旧版驱动程序(1.5,1.6)mongodb
驱动程序(1.1 +)mongo
(1.5,1.6)或新mongodb
(1.0,1.1 +)但它尚未结束。驱动程序只是一个低级接口(又名PHP扩展)。现在我们来到程序员的API,它变得更糟。
混淆的第三个原因,低级驱动程序和API类具有重叠的名称。
mongo
旧版驱动程序 - >类MongoClient,MongoDB(!),... mongodb
驱动程序 - >类MongoDB \ Driver,MongoDB \ BSON,... 但它还没有结束。可以直接使用旧的mongo
驱动程序。新的mongodb
驱动程序提供了类(例如MongoDB \ Driver),但它实际上是一个低级API。你不应该直接使用它,但它不方便。相反,你应该使用MongoDB PHP库,它提供类似于旧MongoClient类的API ......!
https://docs.mongodb.com/php-library/master/
因此,如果您安装了mongodb
,则应安装此MongoDB PHP库以使用MongoDB \ Client。该类应该与旧的MongoClient类似,但是存在一些差异,例如排序和投影。
要安装此库,建议您使用名为Composer的工具,它允许您将这些类下载到您的仓库中。然后使用随Composer提供的自动加载器。
在这里我们来到第四个混乱的源头,即使你在版本1.1中使用最后一个mongodb
驱动程序,MongoDB PHP库也是从1.0版本的!对于那些开发这些内容但对lambda用户来说非常难以理解的人来说,这显然是显而易见的。疯狂混乱的东西。
司机上方还有许多其他图书馆,但我根本不了解它们,所以我不会更多地了解它们(https://docs.mongodb.com/ecosystem/drivers/php-libraries/)。
根据您的PHP版本,明确使用哪个MongoDB 驱动程序:mongo
(旧版)或mongodb
(新版)?
mongo
您可以直接使用MongoClient
课程。mongodb
您还应安装MongoDB PHP库以使用MongoDB\Client
类。答案 2 :(得分:0)
您使用了正确的命名空间。作为stated in their docs,客户端的命名空间为MongoDB\Client
。您也可以使用use
这样的use MonogoDB\Client
语句。