mongodb 未找到类'MongoClient'

8xiog9wr  于 2023-05-06  发布在  Go
关注(0)|答案(7)|浏览(178)

我正在尝试运行以下代码:

<?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”)?“已加载\n”:“未加载\n”;
它总是说“未装载”。

编辑

最后!问题出在dll的名称上。它必须是'php_mongo.dll',我试图加载全名dll,正如我在这篇文章的开头所说的。所以我把正确的dll(extension=php_mongo-1.5.4-5.5-vc11)改成了extension=php_mongo.dll

c2e8gylq

c2e8gylq1#

您尚未安装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:)

ecfdbz9o

ecfdbz9o2#

对于那些在此页面上安装了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
iq3niunx

iq3niunx3#

答案确实是遵循指示。我错过了非常重要的require行,它必须在创建新的mongodb对象之前出现:

<?php

require 'vendor/autoload.php';

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

当然,你需要按照说明在你的项目的根目录下运行这个命令:

composer require mongodb/mongodb
pbwdgjma

pbwdgjma4#

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

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

hgqdbh6s5#

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

sudo apt-get install php5.6-mongo
00jrzges

00jrzges6#

从本页:

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

为了使此扩展工作,必须有DLL文件可用于Windows系统PATH

kadbb459

kadbb4597#

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

相关问题