记录一次php7-mongodb扩展的坑
Posted 幸运儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一次php7-mongodb扩展的坑相关的知识,希望对你有一定的参考价值。
CentOS 安装php 7的mongodb扩展遇到的坑
本人在docker上部署PHP环境时,安装MongoDB扩展遇到了一个坑:
PHP Fatal error: Uncaught MongoDB\Driver\Exception\AuthenticationException: The “SCRAM-SHA-1” authentication mechanism requires libmongoc built with –enable-ssl
此错误应该仅会出现在设置了需要登录验证的MongoDB上。
一开始时没多想,在PECL上找到MongoDB的扩展后,直接编译:
phpize
./configure
make
make install
简单写了测试代码测试了下,就出现以下错误:
PHP Fatal error: Uncaught MongoDB\Driver\Exception\AuthenticationException: The “SCRAM-SHA-1” authentication mechanism requires libmongoc built with –enable-ssl in /var/www/html/mongo.php:8\nStack trace:\n#0 /var/www/html/mongo.php(8): MongoDB\Driver\Manager->executeBulkWrite(‘test.tb’, Object(MongoDB\Driver\BulkWrite))\n#1 {main}\n thrown in /var/www/html/mongo.php on line 8
起先怀疑是./configure
时需要加上一些选项参数,通过./configure --help
里找相关类似于上面错误提示里所说的--enable-ssl
选项,目标锁定:
然而即便加上此选项后:./configure --with-mongodb-ssl
,再重新编译,也依旧无用。
百度一圈找不到解决方案后,就Google了一下,果然发现了问题的关键:
问题就出在上图phpinfo的mongodb扩展信息上的红框里的disabled上。
其实根本原因就是我使用的docker镜像太干净了,连openssl都没有,于是先装上openssl:
yum install -y openssl openssl-devel
- 1
重新编译一下mongodb扩展(./configure
不需加上面所说的选项参数,因为其实默认值就是--with-mongodb-ssl=auto
了),再去phpinfo里看:
果然有所不同,再运行测试代码,测试成功!
以上是关于记录一次php7-mongodb扩展的坑的主要内容,如果未能解决你的问题,请参考以下文章