Intereting Posts
Суммарный запрос с использованием функции groupBy () в laravel Может ли TCPDF / FPDI принимать PDF как строку? Где разместить свои пользовательские функции в WordPress? Как я могу решить, какой шейп-файл (пригород) содержит заданную точку lat-lon в PHP Формат десятичных денег Передача данных пользователя из PHP / HTML в AngularJS strtotime () выдает false в отформатированную дату Сохранять порядок ключей (стабильный сортировка) при сортировке с помощью uasort PHP Как узнать, подключен ли пользователь к веб-сайту с помощью баз данных, базирующихся на php и mysql? Я хочу узнать простейший код обмена сообщениями, используя php php – Лучший способ определить глобальную константу (доступен во всех файлах) PhpStorm не выделяет PHP-код внутри .php-файла при смешивании с HTML Как эхо строк, имеющих в нем определенную переменную из базы данных Как удалить папку с содержимым с помощью PHP Практическая реализация и лучшие практики Zend_ACL + Zend_Auth

Класс «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 ничего не показывает о монго.

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

редактировать

Я пытался

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

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

редактировать

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

Вы не установили драйвер PHP MongoDB, см. Эту ссылку 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 🙂

Для тех, кто прибыл на эту страницу с установленным PHP 7:

Класс MongoCLient предоставлялся pecl install mongo . Но pecl/mongo недоступен для php7 и устарел в пользу pecl/mongodb . Но с pecl/mongodb вам нужно использовать MongoDB \ Driver \ Manager вместо MongoClient (предупреждение на странице тоже так говорит).

См. Здесь для дальнейшего чтения.

При этом вам потребуется слой абстракции поверх PHP MongoDB\Driver\Manager . Это обеспечивается библиотекой mongodb / mongo-php .

Вам понадобится рефакторинг, например:

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

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

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

С этой страницы:

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

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

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

 <?php require 'vendor/autoload.php'; $client = new MongoDB\Client("mongodb://localhost:27017"); 

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

 composer require mongodb/mongodb 

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

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

 sudo apt-get install php5.6-mongo