The issue is with the loading order, so the json extension needs to be loaded before mongo.so
is loaded.
Since others are likely to come across this I will outline the whole process:
In your
/etc/php/mods-available
directory (or as appropriate to platform) create a separatemongo.ini
with the following:
; configuration for php mongo module; priority=30extension=mongo.so
Remove any other references to
mongo.so
from other files such asphp.ini
Create symlinks in each of the
cli
andapache2
directories as required for use as so:
sudo ln -s ../../mods-available/mongo.ini 30-mongo.ini
At end of this you should have a structure that looks like this
$/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
This makes sure that the "json" extension will be loaded by the dynamic loader before the "mongo" module is.
But basically remove the mongo.so
from "php.ini" and put it in it's own file with higher loading order than the json extension. Then it will work.
This possibly needs a JIRA as I believe it has come up before.