LoginSignup
11

More than 5 years have passed since last update.

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

Posted at

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11