sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:error fatal:clase 'MongoClient' no encontrada

TL;DR

La clase MongoClient es parte del paquete PECL heredado mongo pero ya no del paquete mongodb actualizado.

Y como tienes el mongodb extensión instalada, y no el mongo uno, es por eso que está recibiendo el error

Fatal error: Class 'MongoClient' not found

En MongoDB PHP driver github repo, la nota de lanzamiento sobre la versión 1.0.0 sugiere a los desarrolladores que usen MongoDB\Driver\Manager en lugar de MongoClient

Cambios de nuestra extensión heredada de mongo

Lo más significativo es que las clases MongoClient, MongoDB y MongoCollection del controlador heredado han quedado obsoletas por la clase MongoDB\Driver\Manager, que es la nueva puerta de enlace para conectar y ejecutar consultas, comandos y operaciones de escritura.

Entonces, aquí está la documentación de la clase de reemplazo y el fragmento de código que debería reemplazar el suyo:

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

Como la documentación lo solicita, la clase está en desuso.

Advertencia Esta extensión que define esta clase está en desuso. En su lugar, se debe utilizar la extensión MongoDB. Las alternativas a esta clase incluyen:

  • MongoDB\Controlador\Administrador

Por lo que leí en su historial de lanzamiento del repositorio de github, la clase que está tratando de usar ha quedado obsoleta desde la versión de mongodb 1.0.0 , entonces, en la versión 1.6.0 eres, esta clase ni siquiera es parte de la dll más.

Eso está confirmado por este problema en su github

derickr comentó el 16 de abril

MongoClient es una clase del antiguo controlador heredado y se supone que no está disponible en este. El nuevo controlador tiene \MongoDB\Driver\Manager y la biblioteca que lo acompaña tiene \MongoDB\Client.

Debe instalar la antigua extensión heredada (pecl installmongo) y usar PHP 5.x, o actualizar su código para usar las clases de este nuevo controlador, ya que el controlador anterior no está disponible para PHP 7. Hay una guía de actualización en http:// mongodb.github.io/mongo-php-library/upgrade-guide/

Otra forma, como sugiere el miembro de MongoDB citado aquí arriba, es usar esta extensión de pecl:https://pecl.php.net/package/mongo en lugar de https://pecl.php.net/package/mongodb pero también observe la advertencia allí que dice:

Este paquete ha sido reemplazado, pero aún se mantiene para errores y correcciones de seguridad.