Class' MongoClient'未找到

时间:2014-07-02 14:35:33

标签: php mongodb connect

我正在尝试运行此代码:

<?php

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

?>

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

Fatal error: Class 'MongoClient' not found in C:\xampp\htdocs\conexion.php

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

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

我已经添加了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”:“not loaded \ n”;

它总是说'没有加载'。

修改

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

7 个答案:

答案 0 :(得分: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

安装MongoDB PHP驱动程序

sudo apt-get install php5-dev php5-cli php-pear -y
sudo pecl install mongo

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

extension=mongo.so

重启apache

sudo /etc/init.d/apache2 restart

其他帮助信息:

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

php -i | grep 'Configuration File'

在Ubuntu上它显示了这个:

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

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

答案 1 :(得分:26)

对于那些安装了PHP 7的人来到这个页面:

MongoCLient课程由pecl install mongo提供。 但pecl/mongo不适用于php7,不赞成使用pecl/mongodb。但是使用pecl/mongodb,您需要使用MongoDB\Driver\Manager代替MongoClient(页面上的警告也是如此)。

有关详细信息,请参阅here

这就是说,你需要一个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

答案 2 :(得分:3)

得到同样的错误,现在已经解决了。
我正在使用Linux Mint。为了解决这个问题,我在两个目录中添加了extension=mongo.so

  • /etc/php5/cli/php.ini
  • /etc/php5/apache2/php.ini

答案 3 :(得分:3)

安装驱动程序,我有例如php5.6:

sudo apt-get install php5.6-mongo

答案 4 :(得分:3)

答案确实是按照说明进行的。 我错过了在创建新的mongodb对象之前必须出现的非常重要的 require 行:

<?php

require 'vendor/autoload.php';

$client = new MongoDB\Client("mongodb://localhost:27017");

当然,您需要按照说明在项目的根目录中运行此命令:

composer require mongodb/mongodb

答案 5 :(得分:2)

来自this页面:

注意:Windows用户的其他DLL依赖项:

为了使此扩展能够工作,Windows系统PATH必须具有DLL文件

答案 6 :(得分:0)

你的php版本和dll文件版本应该相同,如果版本不相同则检查它,然后根据可用的dll版本更新你的xampp php。