MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:Erro fatal:classe 'MongoClient' não encontrada

TL;DR


A classe MongoClient faz parte do pacote PECL legado mongo, mas não mais do pacote mongodb atualizado.

E como você tem o mongodb extensão instalada, e não o mongo um, é por isso que você está recebendo o erro
Fatal error: Class 'MongoClient' not found

No repositório github do driver MongoDB PHP, a nota de lançamento sobre a versão 1.0.0 sugere que os desenvolvedores usem MongoDB\Driver\Manager em vez de MongoClient

Alterações da nossa extensão mongo legada

Mais significativamente, as classes MongoClient, MongoDB e MongoCollection do driver legado foram obsoletas pela classe MongoDB\Driver\Manager, que é o novo gateway para conectar e executar consultas, comandos e operações de gravação.



Então, aqui está a documentação da classe de substituição e o trecho de código que deve substituir o seu:
$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");

Como a documentação está solicitando, a classe está obsoleta.

Aviso Esta extensão que define esta classe está obsoleta. Em vez disso, a extensão MongoDB deve ser usada. Alternativas para esta classe incluem:
  • MongoDB\Driver\Manager



Pelo que li no histórico de lançamento do repositório do github, a classe que você está tentando usar ficou obsoleta desde a versão do mongodb 1.0.0 , portanto, na versão 1.6.0 você é, essa classe nem faz parte da dll não mais.

Isso é confirmado por este problema em seu github

derickr comentou em 16 de abril

MongoClient é uma classe do antigo driver legacy e não deveria estar disponível neste. O novo driver tem \MongoDB\Driver\Manager, e a biblioteca que o acompanha tem\MongoDB\Client.

Você precisa instalar a extensão legada antiga (pecl installmongo) e usar o PHP 5.x, ou atualizar seu código para usar as classes deste novo driver, pois o driver antigo não está disponível para PHP 7. Existe um guia de atualização em http:// mongodb.github.io/mongo-php-library/upgrade-guide/



Outra maneira, como sugerido pelo membro do MongoDB citado aqui acima é usar esta extensão pecl:https://pecl.php.net/package/mongo em vez de https://pecl.php.net/package/mongodb, mas também observe o aviso lá dizendo:

Este pacote foi substituído, mas ainda é mantido para bugs e correções de segurança.