MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB:Schwerwiegender Fehler:Klasse „MongoClient“ nicht gefunden

TL;DR

Die Klasse MongoClient ist Teil des alten PECL-Pakets mongo, aber nicht mehr des aktuellen mongodb-Pakets.

Und da haben Sie die mongodb Erweiterung installiert und nicht mongo one, deshalb erhalten Sie den Fehler

Fatal error: Class 'MongoClient' not found

Auf dem Github-Repo des MongoDB-PHP-Treibers schlägt der Versionshinweis zur Version 1.0.0 Entwicklern vor, MongoDB\Driver\Manager zu verwenden anstelle von MongoClient

Änderungen gegenüber unserer alten Mongo-Erweiterung

Am wichtigsten ist, dass die Klassen MongoClient, MongoDB und MongoCollection des Legacy-Treibers durch die Klasse MongoDB\Driver\Manager ersetzt wurden, die das neue Gateway zum Verbinden und Ausführen von Abfragen, Befehlen und Schreibvorgängen ist.

Also, hier ist die Dokumentation der Ersatzklasse und das Code-Snippet, das Ihre ersetzen sollte:

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

Da die Dokumentation dazu auffordert, ist die Klasse veraltet.

Warnung Diese Erweiterung, die diese Klasse definiert, ist veraltet. Stattdessen sollte die MongoDB-Erweiterung verwendet werden. Alternativen zu dieser Klasse umfassen:

  • MongoDB\Driver\Manager

Nach dem, was ich in ihrem Github-Repository-Veröffentlichungsverlauf gelesen habe, ist die Klasse, die Sie zu verwenden versuchen, seit der Version von mongodb 1.0.0 veraltet , also auf der Version 1.6.0 Sie sind, diese Klasse ist nicht einmal Teil der dll mehr.

Das wird durch dieses Problem auf ihrem Github bestätigt

derickr kommentierte am 16. April

MongoClient ist eine Klasse aus dem alten Legacy-Treiber und soll in diesem nicht verfügbar sein. Der neue Treiber hat \MongoDB\Driver\Manager und die zugehörige Bibliothek hat \MongoDB\Client.

Sie müssen entweder die alte Legacy-Erweiterung (pecl installmongo) installieren und PHP 5.x verwenden oder Ihren Code aktualisieren, um die Klassen dieses neuen Treibers zu verwenden, da der alte Treiber für PHP 7 nicht verfügbar ist. Es gibt eine Upgrade-Anleitung unter http:// mongodb.github.io/mongo-php-library/upgrade-guide/

Eine andere Möglichkeit, wie vom oben zitierten MongoDB-Mitglied vorgeschlagen, besteht darin, diese Pecl-Erweiterung zu verwenden:https://pecl.php.net/package/mongo anstelle von https://pecl.php.net/package/mongodb, aber bitte auch Beachten Sie dort die Warnung:

Dieses Paket wurde ersetzt, wird aber weiterhin für Fehler und Sicherheitskorrekturen gepflegt.