开发者社区 问答 正文

php安装mongodb扩展 加载失败:报错

在centos7.4环境下,php7.0版本安装完扩展mongodb后,重启php-fpm时提示:

/usr/local/php7/sbin/php-fpm: symbol lookup error: /usr/local/php7/lib/php/extensions/no-debug-zts-20151012/mongodb.so: undefined symbol: OPENSSL_init_ssl

试过各种方法无法解决,求助大神
 

展开
收起
kun坤 2020-06-14 09:49:02 921 分享 版权
阿里云 AI 助理回答

遇到这个错误提示,通常意味着你的 PHP 扩展(在这里是 MongoDB)与当前的 OpenSSL 版本不兼容或者在编译扩展时没有正确链接到 OpenSSL 库。考虑到你是在 CentOS 7.4 环境下操作,这里有几个可能的解决步骤:

  1. 确认OpenSSL版本: 首先,你需要确定系统中安装的 OpenSSL 的版本。可以通过以下命令来查看:

    openssl version -a
    

    如果版本较旧,考虑升级 OpenSSL 到一个更兼容的版本。

  2. 重新编译MongoDB扩展: 在确保 OpenSSL 版本兼容后,需要重新编译 MongoDB PHP 扩展,确保编译时能够找到正确的 OpenSSL 库路径。可以尝试以下步骤:

    • 卸载已有的 MongoDB PHP 扩展:

      pecl uninstall mongodb
      
    • 清理 PHP 缓存和配置:

      rm /usr/local/php7/lib/php/extensions/no-debug-zts-20151012/mongodb.so
      php -r "dl('mongodb.so');"
      
    • 下载 MongoDB 扩展源码并编译安装,注意指定 --with-openssl 参数指向正确的 OpenSSL 安装路径。如果你不确定路径,可以通过 whereis openssl 来查找。假设默认路径为 /usr,则命令如下:

      pecl download mongodb
      tar -xvf mongodb-*.tgz
      cd mongodb-*/
      phpize
      ./configure --with-php-config=/usr/local/php7/bin/php-config --with-openssl=/usr
      make && make install
      
  3. 更新php.ini: 确保在你的 php.ini 文件中正确添加了对新编译的 MongoDB 扩展的引用。如果之前有旧的扩展加载行,替换或更新它。示例:

    extension=mongodb.so
    

    重启 php-fpm 服务以应用更改:

    /usr/local/php7/sbin/php-fpm restart
    
  4. 检查依赖: 确认所有必要的开发库都已经安装,比如 libssl-dev 或者 openssl-devel,这取决于你的 Linux 发行版。你可以通过运行类似 yum install openssl-develapt-get install libssl-dev 的命令来安装这些依赖。

如果以上步骤仍然不能解决问题,可能需要进一步检查编译过程中的错误输出,或者考虑使用 Docker 容器化环境来避免系统级别的依赖冲突。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答