抓狂 - php class mongodb driver manager not found

有个与第三方对接的系统,今天对方突然反映无法连接我们的MongoDB数据库,提示php class mongodb driver manager not found错误。对接系统之前一直运行很好,没有出现过这个问题。

服务器挂掉?MongoDB数据库挂掉?

迅速检查了服务器,OK。测试了MongoDB数据库的连接性,也OK!此外这个对接系统最近没有做过任何的版本与配置修改,那问题发生在哪里?

突然想起前几日重启了服务器,会不会是有些服务没有运行?对接系统是通过部署在我们服务器的php脚本实现的。这时自己才依稀记起在当初做对接配置时,是需要运行一个php相关的服务,经查询是php-fpm(FastCGI Process Manager)服务。php-fpm是一个php的FastCGI管理器,实现了FastCGI协议,负责对php请求的进行解析。

利用命令sudo service php-fpm start启动php-fpm,未提示任何错误。正当以为自己搞定时,却被对方的回复泼了一盆冷水,还是不行,提示同样的错误。

既然提示驱动未找到,那么是不是哪里的配置不正确?php访问MongoDB数据库需要通过一个驱动程序,而这个驱动程序是通过一个php的扩展来实现加载。检查了mongodb.so的扩展以及php.ini的配置,发现都没有问题。这时自己陷入一种摸不着头脑的慌乱状态,不断问自己问题会在哪里。

突然想起这台服务器的php安装曾经出现过问题,安装了两次php,造成有两个php程序,而且版本都是一样的,我想可能就是由于这个引起的。利用php -info检查php.ini的配置信息,果真与自己查看另一个php.ini的配置文件不太一样。在另外一个配置文件中,mongodb.so扩展被做了配置,而这个默认的却没有。

对于程序的bug,找到原因,也就找到解决方案。在启动php-fpm时,显示指定了php.ini以及php-fpm.ini的配置,结果一切正常!启动命令如下:
/usr/local/php/sbin/php-fpm -c <php.ini的绝对路径> -y <php-fpm.conf的绝对路径>

对于这个问题,网上基本都是给出检查mongodb.so扩展配置是否正确的解决方案,我想这是大部分人遇到的问题。对于我这种情况到目前为止还不见有人提起,写下此文给以后会遇到同样问题的人做些参考。

    原文作者:杨梅泡酒
    原文地址: https://www.jianshu.com/p/2e431614702f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞