O problema é com a ordem de carregamento, então a extensão json precisa ser carregada antes de
mongo.so
está carregado. Como é provável que outras pessoas se deparem com isso, descreverei todo o processo:
- No seu
/etc/php/mods-available
diretório (ou conforme apropriado para a plataforma) crie ummongo.ini
separado com o seguinte:
; configuration for php mongo module
; priority=30
extension=mongo.so
-
Remova quaisquer outras referências amongo.so
de outros arquivos comophp.ini
-
Crie links simbólicos em cada um doscli
eapache2
diretórios conforme necessário para uso assim:
sudo ln -s ../../mods-available/mongo.ini 30-mongo.ini
No final disso, você deve ter uma estrutura parecida com esta
$/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
Isso garante que a extensão "json" seja carregada pelo carregador dinâmico antes do módulo "mongo".
Mas basicamente remova o
mongo.so
de "php.ini" e coloque-o em seu próprio arquivo com ordem de carregamento mais alta que a extensão json. Então vai funcionar. Isso possivelmente precisa de um JIRA, pois acredito que tenha surgido antes.
ATUALIZAÇÃO :Na verdade é um JIRA PHP-1052 aberto