web-dev-qa-db-fra.com

Classe 'MongoClient' non trouvée

J'essaie de faire fonctionner ce code:

<?php

$m = new MongoClient("mongodb://54.72.237.242"); 
$db = $m->tilbud; 

?>

A chaque fois, j'ai la même erreur:

Fatal error: Class 'MongoClient' not found in C:\xampp\htdocs\conexion.php

J'ai lu des articles sur ce problème toute la journée, mais rien ne résout mon problème (je suppose que c'est quelque chose que je fais mal).

J'ai téléchargé php_mongo.dll, je l'ai copié dans xampp/php/ext et j'ai ajouté extension=php_mongo.dll dans l'archive php.ini.

J'ai ajouté 4 dll de plus parce que je ne suis pas sûr de celui que je dois utiliser:

  • extension=php_mongo-1.5.4-5.5-vc11-nts
  • extension=php_mongo-1.5.4-5.5-vc11
  • extension=php_mongo-1.5.4-5.5-vc11-nts-x86_64
  • extension=php_mongo-1.5.4-5.5-vc11-x86_64

Alors maintenant, je reçois 5 avertissements au lieu d'un. À la fin, je suppose que l’un d’entre eux fonctionnera et que je supprimerai les 4 autres.

Les choses que j'ai essayées et je suis sûr qu'elles vont bien:

  • Extension_dir pointe vers le bon dossier.
  • Le php.ini que j'ai modifié est celui que xammp charge.
  • Phpinfo ne montre rien sur le mongo.

Que puis-je essayer de plus?

Modifier

J'ai essayé 

echo extension_loaded ("mongo")? "chargé\n": "non chargé\n";

et il dit toujours 'pas chargé'.

Modifier

Enfin, le problème était le nom de la DLL. Il doit s'agir de 'php_mongo.dll' et j'essayais de charger le nom complet dll, comme je l'ai dit au début de ce post. J'ai donc changé la dll correcte pour moi (extension=php_mongo-1.5.4-5.5-vc11) pour extension=php_mongo.dll et le tour est joué!

27

Vous n’avez pas installé le pilote MongoDB PHP, veuillez consulter ce lien http://www.php.net/manual/en/mongo.installation.php

Mettre à jour les sources

Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | Sudo tee /etc/apt/sources.list.d/mongodb.list
Sudo apt-get update

Installer le pilote MongoDB PHP

Sudo apt-get install php5-dev php5-cli php-pear -y
Sudo pecl install mongo

Ouvrez votre fichier php.ini et ajoutez-y:

extension=mongo.so

Redémarrer Apache

Sudo /etc/init.d/Apache2 restart

Autres informations utiles:

cela devrait vous aider à trouver votre fichier php.ini:

php -i | grep 'Configuration File'

Sur Ubuntu, cela montre ceci:

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

notez que vous exécutez cette commande à partir de cli (ligne de commande), donc pour votre vrai php.ini, accédez au dossier Apache2 au lieu de cli :)

38
Lukas

Pour ceux qui arrivent sur cette page avec PHP 7 installé:

La classe MongoCLient a été fournie par pecl install mongo. Mais pecl/mongo n'est pas disponible pour php7 et obsolète en faveur de pecl/mongodb. Mais avec pecl/mongodb, vous devrez utiliser MongoDB\Driver\Manager au lieu de MongoClient (un avertissement à la page le dit aussi).

Voir ici pour en savoir plus.

Ceci dit, vous aurez besoin d’une couche d’abstraction au-dessus du PHP MongoDB\Driver\Manager. Ceci est fourni par mongodb/mongo-php-library .

Vous aurez besoin de refactorer des choses comme:

  • \MongoClient à \MongoDB\Client
  • \MongoCollection à \MongoDB\Collection
  • \MongoClient->selectDB à \MongoDB\Client->selectDatabase
  • \MongoClient->listDBs à \MongoDB\Client->listDatabases
    • la sortie n'est pas non plus un tableau, mais un itérateur. Vous devrez donc utiliser iterator_to_array, ainsi que les modifications apportées à la manière dont vous utilisez l'objet obtenu.
  • \MongoCollection->getName à \MongoDB\Collection->getCollectionName
  • \MongoCollection->update à \MongoDB\Collection->updateOne ou updateMany
  • \MongoCollection->remove à \MongoDB\Collection->deleteOne
  • \MongoCollection->batchInsert à \MongoDB\Collection->insertMany
25
shadi

La réponse est en effet de suivre les instructions . Il me manquait le très important require line qui doit précéder la création du nouvel objet mongodb:

<?php

require 'vendor/autoload.php';

$client = new MongoDB\Client("mongodb://localhost:27017");

Et bien sûr, vous devez exécuter cette commande à la racine de votre projet conformément aux instructions:

composer require mongodb/mongodb
3
mcmacerson

Obtenir la même erreur et maintenant c'est résolu.
J'utilise Linux Mint. Pour résoudre ce problème, j'ai ajouté extension=mongo.so dans deux répertoires: 

  • /etc/php5/cli/php.ini
  • /etc/php5/Apache2/php.ini
3
Biswajit Panday

installer le pilote, j'ai par exemple php5.6:

Sudo apt-get install php5.6-mongo
2
miguelhernandezramos

De this page:

Remarque: dépendances supplémentaires DLL pour les utilisateurs Windows:

Pour que cette extension fonctionne, il existe des fichiers DLL qui doivent être disponibles pour le système Windows PATH.

2
M D P

votre version php et la version du fichier dll doivent être identiques Vérifiez si les versions ne sont pas identiques puis mettez à jour votre php xampp en fonction de la version dll disponible.

0
user3427015