【问题标题】:The "SCRAM-SHA-1" authentication mechanism requires libmongoc built with --enable-ssl“SCRAM-SHA-1”身份验证机制需要使用 --enable-ssl 构建的 libmongoc
【发布时间】:2018-05-26 10:11:33
【问题描述】:

使用 Laravel 5.4 和 Mongodb 3.6 连接数据库时收到错误消息

The "SCRAM-SHA-1" authentication mechanism requires libmongoc built with --enable-ssl

它在具有相同版本的 ubuntu 16.04 中运行良好,但在 AWS Linux 中却没有。

已安装 LAMP [php70, apach24]:

已安装 Mongodb [3.6]:

为php7安装了php-mongodb驱动:

sudo yum -y install php7-pear php70-devel gcc  // completed
sudo pecl7 install mongodb                     // completed 
sudo yum install openssl-devel                 // completed

php-mongodb驱动安装并更新到php.ini,mongodb也显示在phpinfo()中。

我们发现 phpinfo 禁用了 libmongoc ssl,是这个问题吗?

我们如何启用它?

【问题讨论】:

  • 再次检查 PECL 安装,您可能会看到类似 Cannot find OpenSSL's libraries 的错误/警告如果是这样(或者至少可以确定),那么您应该执行类似 yum install openssl-devel 和再次运行安装。无论如何都要在该步骤中查找错误/警告。
  • 与其每隔几分钟发表评论,不如花时间调查一下刚刚被告知的几件事。将您的发现和任何更有效的输出/错误添加到您的问题中。如果您阅读并遵循我所说的内容,那么您可能会解决它。如果问题仍未解决,那么将您“逐步”所做的事情添加到您的问题中,作为人们查看和重现问题的基础,或指出缺少的内容。
  • @NeilLunn - 得到了这个问题的解决方案并将解决方案发布为答案。

标签: mongodb amazon-web-services laravel-5


【解决方案1】:

在 Ubuntu 18.04 LTS、PHP 7.2.7 上

我不得不安装一些额外的包:

sudo apt-get install -y libcurl4-openssl-dev pkg-config libssl-dev

然后重新安装mongodb:

sudo pecl uninstall mongodb
sudo pecl install mongodb

然后检查 SSL 是否启用:

php -i | grep mongo

/etc/php/7.2/cli/conf.d/20-mongodb.ini, mongodb
libmongoc 捆绑版本 => 1.11.0 libmongoc SSL => 启用 libmongoc SSL 库 => OpenSSL libmongoc 加密 => 启用 libmongoc 加密库 => libcrypto

重启php:

sudo service php7.2-fpm restart

【讨论】:

    【解决方案2】:

    我使用 docker 收到相同的消息。我添加到我的 Docker 文件中

    apt-get install -y libcurl4-openssl-dev pkg-config libssl-dev
    

    然后运行

    docker-compose up -d --build
    

    【讨论】:

      【解决方案3】:

      这是我在 CentOS 7 中的解决方法

      删除 mongodb 扩展:

      pecl uninstall mongodb
      

      安装openssl

      sudo yum install openssl-devel
      

      再次重新安装 MongoDB 扩展

      pecl install mongodb
      

      【讨论】:

        【解决方案4】:

        对于那些在 Alpine docker 上遇到错误的人。您必须在 Dockerfile 中添加:

        RUN apk add curl-dev openssl-dev

        而不是 sudo apt-get install -y libcurl4-openssl-dev pkg-config libssl-dev

        我也用过RUN pecl config-set php_ini /etc/php.ini

        【讨论】:

          【解决方案5】:

          错误,因为禁用了 php-mongodb 驱动程序中的 libmongoc SSLlibmongoc Crypto 并通过以下命令启用。

          sudo pecl7 config-set php_ini /etc/php.ini
          

          在安装完mongodb驱动sudo pecl7 install mongodb后,我们应该设置如上。

          现在运行良好。

          【讨论】:

            【解决方案6】:

            在我的 Debian 9 模块编译失败并出现以下错误:

            配置:错误:OpenSSL 库和开发标头无法 被发现

            如果您有同样的错误,请尝试以下操作:

            apt-get remove libssl-dev
            apt-get install libssl1.0-dev
            

            【讨论】:

              【解决方案7】:

              对于我来说,这个命令在 Debian 9 和 php 7.0 上完成所有操作

              sudo apt-get install php-mongodb
              

              之后重启Apache2服务

              【讨论】:

                猜你喜欢
                • 2015-12-20
                • 2016-05-30
                • 2015-10-02
                • 1970-01-01
                • 2020-10-29
                • 2016-10-15
                • 2022-07-14
                • 1970-01-01
                • 2016-06-09
                相关资源
                最近更新 更多