Класс "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à!
Ответы
Ответ 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