MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB:Фатална грешка:Клас „MongoClient“ не е намерен

TL;DR

Класът MongoClient е част от наследения PECL пакет mongo, но вече не е от актуалния пакет mongodb.

И тъй като имате mongodb инсталирано разширение, а не mongo едно, ето защо получавате грешката

Fatal error: Class 'MongoClient' not found

На MongoDB PHP драйвер github repo, бележката за версията 1.0.0 предлага на разработчиците да използват MongoDB\Driver\Manager вместо MongoClient

Промени от нашето наследено разширение mongo

Най-важното е, че класовете MongoClient, MongoDB и MongoCollection на наследения драйвер са остарели от класа MongoDB\Driver\Manager, който е новият шлюз за свързване и изпълнение на заявки, команди и операции за запис.

И така, ето документацията за заместващия клас и фрагмента от код, който трябва да замени вашия:

$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");

Тъй като документацията го подсказва, класът е остарял.

Предупреждение Това разширение, което дефинира този клас, е отхвърлено. Вместо това трябва да се използва разширението MongoDB. Алтернативите на този клас включват:

  • MongoDB\Driver\Manager

От това, което прочетох в тяхната история на издаване на хранилище github, класът, който се опитвате да използвате, е остарял от версията на mongodb 1.0.0 , така че във версия 1.6.0 вие сте, този клас дори не е част от dll вече.

Това се потвърждава от този проблем на техния github

derickr коментира на 16 април

MongoClient е клас от стария legacydriver и не би трябвало да е наличен в този. Новият драйвер има \MongoDB\Driver\Manager, а придружаващата библиотека има \MongoDB\Client.

Трябва или да инсталирате старото наследено разширение (pecl installmongo) и да използвате PHP 5.x, или да актуализирате кода си, за да използвате този нов драйвер, тъй като старият драйвер не е наличен за PHP 7. Има ръководство за надграждане на http:// mongodb.github.io/mongo-php-library/upgrade-guide/

Друг начин, както е предложено от члена на MongoDB, цитиран тук по-горе, е да използвате това pecl разширение:https://pecl.php.net/package/mongo вместо https://pecl.php.net/package/mongodb, но моля също забележете там предупреждението, което гласи:

Този пакет е заменен, но все още се поддържа за грешки и корекции на сигурността.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изпълня командата mongodump програмно от node.js?

  2. Повишете подполета до най-високо ниво в проекцията, без да изброявате всички ключове

  3. Прозрачен отказ на база данни за вашите приложения

  4. Как да разположите ClusterControl на AWS, за да управлявате вашата облачна база данни

  5. Как да получите краткото име на месеца в SQL