找不到"MongoClient"类

Mig*_*ler 28 php connect mongodb

我正在尝试运行此代码:

<?php

$m = new MongoClient("mongodb://54.72.237.242"); 
$db = $m->tilbud; 

?>
Run Code Online (Sandbox Code Playgroud)

每次我都得到同样的错误:

Fatal error: Class 'MongoClient' not found in C:\xampp\htdocs\conexion.php
Run Code Online (Sandbox Code Playgroud)

我一整天都在阅读这个问题,但是任何事情都解决了我的问题(我想这是我做错的事).

我下载了php_mongo.dll,我将它复制到xampp/php/ext中,并extension=php_mongo.dll在php.ini存档中添加.

我添加了4个dll,因为我不确定我必须使用哪个:

  • extension=php_mongo-1.5.4-5.5-vc11-nts
  • extension=php_mongo-1.5.4-5.5-vc11
  • extension=php_mongo-1.5.4-5.5-vc11-nts-x86_64
  • extension=php_mongo-1.5.4-5.5-vc11-x86_64

所以现在我得到5个警告而不是一个.最后我想其中一个会起作用,我会删除其他4个.

我试过的东西,我确定它们还可以:

  • extension_dir指向正确的文件夹.
  • 我修改的php.ini是xammp加载的.
  • Phpinfo没有显示有关mongo的任何信息.

我还能尝试什么?

编辑

我试过了

echo extension_loaded("mongo")?"loaded \n":"未加载\n";

它总是说'没有加载'.

编辑

最后!问题是dll的名字.它必须是'php_mongo.dll',我试图加载全名dll正如我在这篇文章的开头所说的那样.所以我改变了正确的dll for me(extension=php_mongo-1.5.4-5.5-vc11)for extension=php_mongo.dll和voilà!

Luk*_*kas 38

您尚未安装MongoDB PHP驱动程序,请参阅此链接http://www.php.net/manual/en/mongo.installation.php

更新来源

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

安装MongoDB PHP驱动程序

sudo apt-get install php5-dev php5-cli php-pear -y
sudo pecl install mongo
Run Code Online (Sandbox Code Playgroud)

打开php.ini文件并添加到它:

extension=mongo.so
Run Code Online (Sandbox Code Playgroud)

重启apache

sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)

其他帮助信息:

这应该有助于找到你的php.ini文件:

php -i | grep 'Configuration File'
Run Code Online (Sandbox Code Playgroud)

在Ubuntu上它显示了这个:

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Run Code Online (Sandbox Code Playgroud)

请注意,您从cli(命令行)运行此命令,因此对于您真正的php.ini转到文件夹apache2而不是cli :)

  • 在最初的问题中,有一个对"C:\ xampp\htdocs"的引用,表明它们正在使用Windows,因此这些命令都不会对它们有任何帮助. (5认同)
  • 使用`printf"\n"| pecl install mongo` if你需要将它集成到安装脚本中. (3认同)

sha*_*adi 28

对于那些到达此页面并安装了PHP 7的人:

MongoCLient课程由提供pecl install mongo.但pecl/mongo不适用于php7并且不赞成使用pecl/mongodb.但是pecl/mongodb你需要使用MongoDB\Driver\Manager而不是MongoClient(页面上的警告也是如此).

请参阅此处以进一步阅读

这就是说,你需要一个PHP之上的抽象层MongoDB\Driver\Manager.这是由mongodb/mongo-php-library提供的.

您需要重构以下内容:

  • \MongoClient\MongoDB\Client
  • \MongoCollection\MongoDB\Collection
  • \MongoClient->selectDB\MongoDB\Client->selectDatabase
  • \MongoClient->listDBs\MongoDB\Client->listDatabases
    • 输出也不是数组而是迭代器,所以你需要使用iterator_to_array,同时编辑你如何使用结果对象
  • \MongoCollection->getName\MongoDB\Collection->getCollectionName
  • \MongoCollection->update\MongoDB\Collection->updateOneupdateMany
  • \MongoCollection->remove\MongoDB\Collection->deleteOne
  • \MongoCollection->batchInsert\MongoDB\Collection->insertMany

  • 为什么他们让我们重构一切?好难过 (7认同)
  • 您还可以在 php mongodb 客户端之上使用此插件以在新驱动程序上使用旧方法和类:https://github.com/alcaeus/mongo-php-adapter (2认同)