sql >> データベース >  >> NoSQL >> MongoDB

MongoDB:致命的なエラー:クラス'MongoClient'が見つかりません

    TL; DR

    クラスMongoClient はレガシーPECLパッケージmongoの一部ですが、最新のmongodbパッケージには含まれていません。

    そして、あなたはmongodbを持っているので mongoではなく、拡張機能がインストールされています 1つは、これがエラーが発生する理由です

    Fatal error: Class 'MongoClient' not found
    

    MongoDB PHPドライバーのgithubリポジトリでは、バージョン1.0.0に関するリリースノートで、開発者がMongoDB\Driver\Managerを使用することを提案しています。 MongoClientの代わりに

    従来のmongo拡張機能からの変更

    最も重要なことは、レガシードライバーのMongoClient、MongoDB、およびMongoCollectionクラスは、クエリ、コマンド、および書き込み操作を接続して実行するための新しいゲートウェイであるMongoDB \ Driver\Managerクラスによって廃止されたことです。

    したがって、これが置換クラスのドキュメントと、置換する必要のあるコードのスニペットです:

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

    ドキュメントがそれを促しているので、クラスは非推奨になっています。

    警告 このクラスを定義するこの拡張機能は非推奨です。代わりに、MongoDB拡張機能を使用する必要があります。このクラスの代替案は次のとおりです。

    • MongoDB \ Driver \ Manager

    githubリポジトリのリリース履歴で読んだところによると、使用しようとしているクラスは、mongodb 1.0.0のバージョン以降廃止されています。 、つまり、バージョン1.6.0では あなたは、このクラスはdllの一部でもありません もう。

    それは彼らのgithubのこの問題によって確認されています

    derickrが4月16日にコメントしました

    MongoClientは、古いレガシードライバーのクラスであり、このクラスでは使用できないはずです。新しいドライバーには\MongoDB\ Driver \ Managerがあり、付随するライブラリには\ MongoDB\Clientがあります。

    古いレガシー拡張機能(pecl installmongo)をインストールしてPHP 5.xを使用するか、古いドライバーがPHP 7で使用できないため、この新しいドライバーのクラスを使用するようにコードを更新する必要があります。アップグレードガイドはhttp://にあります。 mongodb.github.io/mongo-php-library/upgrade-guide/

    別の方法として、上記で引用したMongoDBメンバーが提案しているように、https://pecl.php.net/package/mongodbの代わりにhttps://pecl.php.net/package/mongoというpecl拡張機能を使用することもできます。そこに次のような警告があることに注意してください:

    このパッケージは置き換えられましたが、バグとセキュリティ修正のために引き続き維持されています。



    1. AzureRedisCacheが複数のインスタンスで機能していないセッション状態

    2. 水平サーバー全体でsocket.ioユーザーをカウントする

    3. DynamoDBとMongoDBNoSQL

    4. データをmysqlからredisに移動する方法