2016-05-16 13 views
13

gefunden Wenn folgenden PHP-Code ausführen:PHP MongoDB: Fatal error: Class 'MongoClient' nicht

$m = new MongoClient("mongodb://localhost:27017"); 

ich folgende Fehlermeldung erhalten:

Fatal error: Class 'MongoClient' not found in (...)

MongoDB Erweiterung korrekt installiert scheint (I kopiert php_mongodb. DLL zu ext Ordner und aktualisiert php.ini).

PHP scheint, dass Erweiterung läuft ordnungsgemäß zu bestätigen, wie der folgende Code bestätigt wird geladen:

echo extension_loaded("mongodb") ? "loaded\n" : "not loaded\n"; 

Auch phpinfo() zeigt die Erweiterung MongoDB geladen wurde.

UPDATE

Problem noch nicht gelöst.

phpinfo() zeigt deutlich, dass der Treiber geladen ist:

enter image description here

Aber ich immer noch die gleichen fatalen Fehler.

+2

MongoDB = MongoClient –

+0

http://php.net/MongoDB http://php.net/MongoClient –

+0

Vielen Dank für die Klärung! Wie kann ich die MongoDB-Bibliothek für PHP auf Windows installieren (offizielle Anweisungen gelten nur für Linux)? – Tom

Antwort

44

TL;

DR

Die Klasse MongoClient ist Teil des Legacy-PECL-Pakets mongo aber nicht mehr von dem up-to-date mongodb Paket. statt MongoClient

Changes from our legacy mongo extension

Most significantly, the legacy driver's MongoClient, MongoDB, and MongoCollection classes have been obsoleted by the MongoDB\Driver\Manager class, which is the new gateway for connecting and executing queries, commands, and write operations.

Quelle

auf MongoDB PHP-Treiber GitHub Repo, die Release-Info über die Version 1.0.0, ist Entwickler darauf hindeutet, MongoDB\Driver\Manager zu verwenden: https://github.com/mongodb/mongo-php-driver/releases/tag/1.0.0


Da die Dokumentation dazu auffordert, ist die Klasse veraltet.

Warning This extension that defines this class is deprecated. Instead, the MongoDB extension should be used. Alternatives to this class include:

  • MongoDB\Driver\Manager

Quelle: http://php.net/MongoClient


Von dem, was ich gelesen on their github repository release history, die Klasse, die Sie versucht hat, seit der Version von mongodb 1.0.0 veralteten zu verwenden, also auf der Version 1.6.0 Sie sind, diese Klasse ist nicht einmal Teil der dll mehr.

, die von this issue on their github bestätigt

derickr commented on Apr 16

MongoClient is a class from the old legacy driver and is not supposed to be available in this one. The new driver has \MongoDB\Driver\Manager, and, the accompanying library has \MongoDB\Client.

You either need to install the old legacy extension (pecl install mongo) and use PHP 5.x, or update your code to use this new driver's classes as the old driver is not available for PHP 7. There is an upgrade guide at http://mongodb.github.io/mongo-php-library/upgrade-guide/

Quelle: https://github.com/mongodb/mongo-php-driver/issues/300#issuecomment-210820288


ist hier the replacement class documentation und der Code-Snippet, das Sie ersetzen sollte:

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

Eine andere Art und Weise, wie vorgeschlagen von dem MongoDB-Mitglied hier oben zitierten ist diese PECL-Erweiterung zu verwenden: https://pecl.php.net/package/mongo statt https://pecl.php.net/package/mongodb aber bitte auch die Warnung bemerken, dass es besagt:

This package has been superseded, but is still maintained for bugs and security fixes.

+1

Sie sind ein Gott senden! – Radmation

+0

Vielen Dank, es gibt viele Seiten gesagt werden, „veraltet“ und bezieht sich auf eine andere Seite, die auch veraltet .. Beispiele in der PHP-Handbuch zeigt „$ m = new MongoClient()“, die nicht mehr funktioniert, habe ich auch habe meine Chance mit "$ m = new MongoDB()" versucht, was auch nicht funktioniert. Das hat also mein Problem gelöst. Vielen Dank. – endo64

+0

Vielen Dank. – cpap

Verwandte Themen