美文网首页程序员技术干货
抓狂 - php class mongodb driver ma

抓狂 - php class mongodb driver ma

作者: 杨梅泡酒 | 来源:发表于2018-11-15 16:54 被阅读80次

    有个与第三方对接的系统,今天对方突然反映无法连接我们的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扩展配置是否正确的解决方案,我想这是大部分人遇到的问题。对于我这种情况到目前为止还不见有人提起,写下此文给以后会遇到同样问题的人做些参考。

    相关文章

      网友评论

        本文标题:抓狂 - php class mongodb driver ma

        本文链接:https://www.haomeiwen.com/subject/gdbyfqtx.html