Подтвердить что ты не робот

Класс "MongoClient" не найден

Я пытаюсь запустить этот код:

<?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 и добавил 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.

Вещи, которые я пробовал, и я уверен, что они в порядке:

  • Расширение_dir указывает на правильную папку.
  • Измененный мной php.ini является тем, который загружает xammp.
  • Phpinfo ничего не показывает о монго.

Что еще я могу попробовать?

Edit

Я пробовал

echo extension_loaded ( "mongo" )? "загружен\n": "не загружен \n";

и он всегда говорит "не загружен".

Edit

Наконец-то! Проблема была в имени DLL. Это должно быть "php_mongo.dll", и я пытался загрузить полное имя dll, как я сказал в начале этого сообщения. Поэтому я изменил правильную dll для меня (extension=php_mongo-1.5.4-5.5-vc11) для extension=php_mongo.dll и voilà!

4b9b3361

Ответ 1

Вы не установили драйвер 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

Установите драйвер PHP MongoDB

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:)

Ответ 2

Для тех, кто прибыл на эту страницу с установленным 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 to \MongoDB\Client
  • \MongoCollection to \MongoDB\Collection
  • \MongoClient->selectDB to \MongoDB\Client->selectDatabase
  • \MongoClient->listDBs до \MongoDB\Client->listDatabases
    • также вывод не является массивом, а итератором, поэтому вам нужно будет использовать iterator_to_array, а также изменения в том, как вы используете результирующий объект
  • \MongoCollection->getName to \MongoDB\Collection->getCollectionName
  • \MongoCollection->update to \MongoDB\Collection->updateOne или updateMany
  • \MongoCollection->remove to \MongoDB\Collection->deleteOne
  • \MongoCollection->batchInsert to \MongoDB\Collection->insertMany

Ответ 3

Получение той же ошибки и теперь она решена.
Я использую Linux Mint. Чтобы решить эту проблему, я добавил extension=mongo.so в две папки:

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

Ответ 4

От эта страница:

Примечание. Дополнительные зависимости DLL для пользователей Windows:

Чтобы это расширение работало, есть DLL файлы, которые должны быть доступны для системы Windows PATH

Ответ 5

Ответ действительно должен следовать инструкциям. Мне не хватало очень важной строки require, которая должна появиться перед созданием нового объекта mongodb:

<?php

require 'vendor/autoload.php';

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

И, конечно, вам нужно запустить эту команду в корне вашего проекта в соответствии с инструкциями:

composer require mongodb/mongodb

Ответ 6

версия вашего php и версия dll файла должны быть одинаковыми, если версии не совпадают, а затем обновите xampp php в соответствии с доступной версией dll.

Ответ 7

установить драйвер, у меня есть, например, php5.6:

sudo apt-get install php5.6-mongo