MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB:Błąd krytyczny:nie znaleziono klasy „MongoClient”

TL;DR

Klasa MongoClient jest częścią starszego pakietu PECL mongo, ale nie jest już częścią aktualnego pakietu mongodb.

A ponieważ masz mongodb zainstalowane rozszerzenie, a nie mongo jeden, dlatego pojawia się błąd

Fatal error: Class 'MongoClient' not found

W repozytorium sterowników MongoDB PHP na github, informacja o wydaniu wersji 1.0.0 sugeruje programistom używanie MongoDB\Driver\Manager zamiast MongoClient

Zmiany w naszym starszym rozszerzeniu mongo

Co najważniejsze, klasy MongoClient, MongoDB i MongoCollection starszego sterownika zostały zastąpione klasą MongoDB\Driver\Manager, która jest nową bramą do łączenia i wykonywania zapytań, poleceń i operacji zapisu.

Oto dokumentacja klasy zastępczej i fragment kodu, który powinien zastąpić twoją:

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

Ponieważ dokumentacja to podpowiada, klasa jest przestarzała.

Ostrzeżenie To rozszerzenie, które definiuje tę klasę, jest przestarzałe. Zamiast tego należy użyć rozszerzenia MongoDB. Alternatywy dla tej klasy obejmują:

  • MongoDB\Driver\Manager

Z tego, co przeczytałem w historii wydania repozytorium github, klasa, której próbujesz użyć, została przestarzała od wersji mongodb 1.0.0 , więc w wersji 1.6.0 tak, ta klasa nie jest nawet częścią dll więcej.

Potwierdza to ten problem na ich githubie

derickr skomentował 16 kwietnia

MongoClient to klasa ze starego legacydriver i nie powinna być dostępna w tym. Nowy sterownik ma \MongoDB\Driver\Manager, a towarzysząca mu biblioteka ma \MongoDB\Client.

Musisz albo zainstalować stare, starsze rozszerzenie (pecl installmongo) i użyć PHP 5.x, albo zaktualizować swój kod, aby używał nowych klas sterownika, ponieważ stary sterownik nie jest dostępny dla PHP 7. Istnieje przewodnik po uaktualnieniu pod adresem http:// mongodb.github.io/mongo-php-library/upgrade-guide/

Innym sposobem, jak sugeruje cytowany powyżej członek MongoDB, jest użycie tego rozszerzenia pecl:https://pecl.php.net/package/mongo zamiast https://pecl.php.net/package/mongodb, ale proszę również zwróć uwagę na ostrzeżenie:

Ten pakiet został zastąpiony, ale nadal jest utrzymywany pod kątem błędów i poprawek bezpieczeństwa.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Słaba wydajność agregacji wyszukiwania

  2. Zapisz podzbiór kolekcji MongoDB w innej kolekcji

  3. Jak MongoDB radzi sobie z równoległymi aktualizacjami?

  4. MongoDB z Mongoid w Rails — indeksowanie geoprzestrzenne

  5. Jak złapać wyjątek podczas tworzenia instancji MongoClient?