在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
试过各种方法无法解决,求助大神
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到这个错误提示,通常意味着你的 PHP 扩展(在这里是 MongoDB)与当前的 OpenSSL 版本不兼容或者在编译扩展时没有正确链接到 OpenSSL 库。考虑到你是在 CentOS 7.4 环境下操作,这里有几个可能的解决步骤:
确认OpenSSL版本: 首先,你需要确定系统中安装的 OpenSSL 的版本。可以通过以下命令来查看:
openssl version -a
如果版本较旧,考虑升级 OpenSSL 到一个更兼容的版本。
重新编译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
更新php.ini: 确保在你的 php.ini
文件中正确添加了对新编译的 MongoDB 扩展的引用。如果之前有旧的扩展加载行,替换或更新它。示例:
extension=mongodb.so
重启 php-fpm 服务以应用更改:
/usr/local/php7/sbin/php-fpm restart
检查依赖: 确认所有必要的开发库都已经安装,比如 libssl-dev
或者 openssl-devel
,这取决于你的 Linux 发行版。你可以通过运行类似 yum install openssl-devel
或 apt-get install libssl-dev
的命令来安装这些依赖。
如果以上步骤仍然不能解决问题,可能需要进一步检查编译过程中的错误输出,或者考虑使用 Docker 容器化环境来避免系统级别的依赖冲突。