MongoDBのPHPドライバのライブラリロードエラー

  • 10
    Like
  • 0
    Comment
More than 1 year has passed since last update.

MongoDBにphpでつなごうとすると、以下のエラーが出ることがある

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mongo.so' - /usr/lib64/php/modules/mongo.so: undefined symbol: php_json_encode in Unknown on line 0
PHP Fatal error:  Class 'MongoClient' not found in /root/test.php on line 4

これはMongoDBのPHPドライバ(mongo.so)が、jsonのPHPライブラリ(json.so)よりも先にロードされてしまう事が原因。

私の場合は、/etc/php.iniにてmongo.soをロードし、/etc/php.d/json.iniでjson.soをロードする設定であり、/etc/php.ini/etc/php.d/*よりも先に読み込まれるため、このエラーが出ていた。

この場合は/etc/php.ini内でmongo.soをロードするのでは無く、/etc/php.d/mongo.iniなどの/etc/php.d/json.iniよりも後に読まれる設定ファイルを作って、その中でmongo.soをロードしてあげればよい。

/etc/php.d/mongo.iniの設定例は以下の通り。

extension=/usr/lib64/php/modules/mongo.so