sql >> Database >  >> NoSQL >> MongoDB

mongo.so:> undefined symbool:php_json_encode in Unknown on line 0. Na installatie mongo-stuurprogramma voor php

Het probleem zit in de laadvolgorde, dus de json-extensie moet worden geladen vóór mongo.so is geladen.

Aangezien anderen dit waarschijnlijk zullen tegenkomen, zal ik het hele proces schetsen:

  • In uw /etc/php/mods-available directory (of zoals van toepassing op platform) maak een aparte mongo.ini met het volgende:
; configuration for php mongo module
; priority=30
extension=mongo.so
  • Verwijder alle andere verwijzingen naar mongo.so van andere bestanden zoals php.ini

  • Maak symbolische links in elk van de cli en apache2 mappen zoals vereist voor gebruik als volgt:

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

Aan het einde hiervan zou je een structuur moeten hebben die er zo uitziet

$/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

Dit zorgt ervoor dat de "json"-extensie wordt geladen door de dynamische lader voordat de "mongo" -module wordt geladen.

Maar verwijder in feite de mongo.so van "php.ini" en plaats het in zijn eigen bestand met een hogere laadvolgorde dan de json-extensie. Dan zal het werken.

Dit heeft mogelijk een JIRA nodig, omdat ik denk dat het eerder is voorgekomen.

UPDATE :Eigenlijk is het een open JIRA PHP-1052



  1. Leidt elke aanroep binnen een multi()-aanroep in phpredis tot een nieuwe netwerkrondreis naar redis?

  2. Laravel - Wis alle cache / redis-sleutels die een specifieke tekenreeks bevatten

  3. redis slave synchroniseert niet met master

  4. Het laatste bericht van elk gesprek, waarbij een gebruiker betrokken is, weergeven in MongoDB