MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB :erreur fatale :classe 'MongoClient' introuvable

TL;DR

La classe MongoClient fait partie de l'ancien package PECL mongo mais plus du package mongodb à jour.

Et puisque vous avez le mongodb extension installée, et non le mongo un, c'est pourquoi vous obtenez l'erreur

Fatal error: Class 'MongoClient' not found

Sur le référentiel github du pilote PHP MongoDB, la note de version sur la version 1.0.0 suggère aux développeurs d'utiliser MongoDB\Driver\Manager au lieu de MongoClient

Modifications par rapport à notre ancienne extension mongo

Plus important encore, les classes MongoClient, MongoDB et MongoCollection du pilote hérité ont été rendues obsolètes par la classe MongoDB\Driver\Manager, qui est la nouvelle passerelle pour connecter et exécuter des requêtes, des commandes et des opérations d'écriture.

Alors, voici la documentation de la classe de remplacement et l'extrait de code qui devrait remplacer la vôtre :

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

Comme la documentation le demande, la classe est obsolète.

Avertissement Cette extension qui définit cette classe est obsolète. Au lieu de cela, l'extension MongoDB doit être utilisée. Les alternatives à cette classe incluent :

  • MongoDB\Driver\Manager

D'après ce que j'ai lu sur l'historique des versions de leur référentiel github, la classe que vous essayez d'utiliser est obsolète depuis la version de mongodb 1.0.0 , donc, sur la version 1.6.0 vous l'êtes, cette classe ne fait même pas partie de la dll plus.

Cela est confirmé par ce problème sur leur github

derickr a commenté le 16 avril

MongoClient est une classe de l'ancien legacydriver et n'est pas censé être disponible dans celui-ci. Le nouveau pilote a \MongoDB\Driver\Manager et la bibliothèque qui l'accompagne a\MongoDB\Client.

Vous devez soit installer l'ancienne extension héritée (pecl installmongo) et utiliser PHP 5.x, soit mettre à jour votre code pour utiliser les classes de ce nouveau pilote car l'ancien pilote n'est pas disponible pour PHP 7. Il existe un guide de mise à niveau sur http:// mongodb.github.io/mongo-php-library/upgrade-guide/

Une autre façon, comme suggéré par le membre MongoDB cité ci-dessus est d'utiliser cette extension pecl :https://pecl.php.net/package/mongo au lieu de https://pecl.php.net/package/mongodb mais s'il vous plaît aussi notez l'avertissement indiquant :

Ce package a été remplacé, mais est toujours maintenu pour les bogues et les correctifs de sécurité.