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

mongo.so:>未定義のシンボル:0行目の不明のphp_json_encode。インストール後、php用のmongoドライバー

    問題は読み込み順序にある​​ため、mongo.soの前にjson拡張機能を読み込む必要があります ロードされます。

    他の人がこれに遭遇する可能性が高いので、私はプロセス全体の概要を説明します:

    • /etc/php/mods-available内 ディレクトリ(またはプラットフォームに応じて)別のmongo.iniを作成します 次のように:
    ; configuration for php mongo module
    ; priority=30
    extension=mongo.so
    
    • mongo.soへの他の参照をすべて削除します php.iniなどの他のファイルから

    • cliにシンボリックリンクを作成します およびapache2 そのように使用するために必要なディレクトリ:

    sudo ln -s ../../mods-available/mongo.ini 30-mongo.ini

    これで、次のような構造になります

    $/etc/php5$ tree
    .
    ├── apache2
    │   ├── conf.d
    │   │   ├── 05-opcache.ini -> ../../mods-available/opcache.ini
    │   │   ├── 10-pdo.ini -> ../../mods-available/pdo.ini
    │   │   ├── 20-json.ini -> ../../mods-available/json.ini
    │   │   ├── 20-readline.ini -> ../../mods-available/readline.ini
    │   │   └── 30-mongo.ini -> ../../mods-available/mongo.ini
    │   └── php.ini
    ├── cli
    │   ├── conf.d
    │   │   ├── 05-opcache.ini -> ../../mods-available/opcache.ini
    │   │   ├── 10-pdo.ini -> ../../mods-available/pdo.ini
    │   │   ├── 20-json.ini -> ../../mods-available/json.ini
    │   │   ├── 20-readline.ini -> ../../mods-available/readline.ini
    │   │   └── 30-mongo.ini -> ../../mods-available/mongo.ini
    │   └── php.ini
    └── mods-available
        ├── json.ini
        ├── mongo.ini
        ├── opcache.ini
        ├── pdo.ini
        └── readline.ini
    

    これにより、「mongo」モジュールが読み込まれる前に、「json」拡張機能が動的ローダーによって読み込まれるようになります。

    ただし、基本的にmongo.soを削除します 「php.ini」から、json拡張子よりも高い読み込み順序で独自のファイルに配置します。その後、機能します。

    以前に登場したと思うので、これにはJIRAが必要になる可能性があります。

    更新 :実際にはオープンなJIRA PHP-1052



    1. セルフホストのMongoDB

    2. すべてのセットをredisで取得するにはどうすればよいですか?

    3. NoSQLトレンド– MongoDB、Cassandra、CouchDB、Riak

    4. すべてのMongoコレクションをループして、クエリを実行します