Php 类别';MongoClient';找不到
我正在尝试运行以下代码:Php 类别';MongoClient';找不到,php,mongodb,connect,Php,Mongodb,Connect,我正在尝试运行以下代码: <?php $m = new MongoClient("mongodb://54.72.237.242"); $db = $m->tilbud; ?> 我一整天都在读关于这个问题的书,但任何东西都能解决我的问题(我想这是我做错了什么) 我下载了php_mongo.dll,在xampp/php/ext中复制了它,并在php.ini归档文件中添加了extension=php_mongo.dll 我又添加了4个dll,因为我不确定要使用哪一个:
<?php
$m = new MongoClient("mongodb://54.72.237.242");
$db = $m->tilbud;
?>
我一整天都在读关于这个问题的书,但任何东西都能解决我的问题(我想这是我做错了什么)
我下载了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\u mongo-1.5.4-5.5-vc11-nts-x86\u 64
extension=php\u mongo-1.5.4-5.5-vc11-x86\u 64
- 扩展名_dir指向正确的文件夹
- 我修改的php.ini是xammp加载的
- Phpinfo没有显示任何关于mongo的信息
问题是dll的名称。它必须是“php_mongo.dll”,正如我在本文开头所说的那样,我正试图加载完整的名称dll。因此,我为自己更改了正确的dll(
extension=php_mongo-1.5.4-5.5-vc11
)为extension=php_mongo.dll
,瞧 您尚未安装MongoDB 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:)第页:
注意:Windows用户的其他DLL依赖项:
为了使此扩展正常工作,Windows系统路径必须有可用的DLL文件得到相同的错误,现在它已解决。
我正在使用LinuxMint。为了解决这个问题,我在两个目录中添加了
extension=mongo.so
:
- /etc/php5/cli/php.ini
- /etc/php5/apache2/php.ini
MongoCLient
类由pecl-install-mongo
提供。
但是,pecl/mongo
不适用于php7,并且不推荐使用pecl/mongodb
。但是使用pecl/mongodb
时,您需要使用而不是(页面上的警告也这么说)
请参阅以获取进一步阅读
这就是说,您需要在PHPMongoDB\Driver\Manager
之上有一个抽象层。这是由提供的
您需要重构以下内容:
至\MongoClient
\MongoDB\Client
至\MongoCollection
\MongoDB\Collection
至\MongoClient->selectDB
\MongoDB\Client->selectDatabase
至\MongoClient->listDBs
\MongoDB\Client->listDatabases
- 此外,输出不是数组而是迭代器,因此您需要使用
,并编辑如何使用结果对象迭代器\u to_array
- 此外,输出不是数组而是迭代器,因此您需要使用
至\MongoCollection->getName
\MongoDB\Collection->getCollectionName
至\MongoCollection->update
或\MongoDB\Collection->updateOne
updateMany
至\MongoCollection->remove
\MongoDB\Collection->deleteOne
到\MongoCollection->batchInsert
\MongoDB\Collection->insertMany
sudo apt-get install php5.6-mongo
答案确实是按照指示去做。 在创建新的mongodb对象之前,我错过了非常重要的require行:
<?php
require 'vendor/autoload.php';
$client = new MongoDB\Client("mongodb://localhost:27017");
下载dll是不够的。按照此处的安装说明进行操作:谢谢,但我已经按照这些说明进行了操作。相关问题:如果需要将其集成到安装脚本中,请使用
printf“\n”| pecl install mongo
。原始问题中提到了C:\xampp\htdocs
,这表明他们正在使用Windows,因此,这些命令都不会对他们有任何帮助。说得好,谢谢。我希望我的答案对所有使用linux的人仍然有用。解决了!我对扩展名有问题,extension=mongodb.so->mongo.soYou也可以在php mongodb客户端上使用这个插件,使用新驱动程序上的旧方法和类:+1来响应这个响应,但它对我有帮助,因为我在这个存储库之前添加了这个插件
<?php
require 'vendor/autoload.php';
$client = new MongoDB\Client("mongodb://localhost:27017");
composer require mongodb/mongodb