zoukankan      html  css  js  c++  java
  • 记录一次php7-mongodb扩展的坑

    本人在docker上部署PHP环境时,安装MongoDB扩展遇到了一个坑: 
    PHP Fatal error: Uncaught MongoDBDriverExceptionAuthenticationException: The “SCRAM-SHA-1” authentication mechanism requires libmongoc built with –enable-ssl 
    此错误应该仅会出现在设置了需要登录验证的MongoDB上。

    一开始时没多想,在PECL上找到MongoDB的扩展后,直接编译:

    phpize
    ./configure
    make
    make install

    简单写了测试代码测试了下,就出现以下错误: 
    PHP Fatal error: Uncaught MongoDBDriverExceptionAuthenticationException: The “SCRAM-SHA-1” authentication mechanism requires libmongoc built with –enable-ssl in /var/www/html/mongo.php:8 Stack trace: #0 /var/www/html/mongo.php(8): MongoDBDriverManager->executeBulkWrite(‘test.tb’, Object(MongoDBDriverBulkWrite)) #1 {main} thrown in /var/www/html/mongo.php on line 8

    起先怀疑是./configure时需要加上一些选项参数,通过./configure --help里找相关类似于上面错误提示里所说的--enable-ssl选项,目标锁定: 
     
    然而即便加上此选项后:./configure --with-mongodb-ssl,再重新编译,也依旧无用。

    百度一圈找不到解决方案后,就Google了一下,果然发现了问题的关键: 
    phpinfo
    问题就出在上图phpinfo的mongodb扩展信息上的红框里的disabled上。

    其实根本原因就是我使用的docker镜像太干净了,连openssl都没有,于是先装上openssl:

    yum install -y openssl openssl-devel
    • 1

    重新编译一下mongodb扩展(./configure不需加上面所说的选项参数,因为其实默认值就是--with-mongodb-ssl=auto了),再去phpinfo里看: 
    phpinfo
    果然有所不同,再运行测试代码,测试成功!

    欢迎大家学习,交流
  • 相关阅读:
    oracle 导入数据语句
    移动上去换样式代码
    google suggest 代码例子
    删除一个表的字段的sql语句命令
    将json从前台传到后台注意问题
    eclipse 自动 getter setter 注释
    jsp界面获取地址栏参数
    常见的正则表达式验证
    JSTL 核心标签库
    javascript中的call和apply两个方法的区别
  • 原文地址:https://www.cnblogs.com/lijintao1025/p/9065981.html
Copyright © 2011-2022 走看看