升级系统与PHP版本后无法加载ssh2.so动态库求助
解决PHP Startup: Unable to load dynamic library 'ssh2.so'问题
1. 排查版本兼容性问题
Ubuntu 22.04默认使用OpenSSL 3.0,而你之前基于PHP7.2/OpenSSL1.1.1安装的ssh2扩展无法兼容新环境。先确认当前环境的关键版本信息:
- 执行
openssl version确认系统OpenSSL版本 - 执行
php -v确认当前使用的PHP版本 - 执行
php -i | grep ssh2检查是否已有ssh2扩展及编译依赖信息
2. 重新编译适配环境的ssh2扩展
放弃旧的预编译包,手动编译适配当前PHP和OpenSSL版本的ssh2:
安装编译依赖
sudo apt update && sudo apt install build-essential php-dev libssh2-1-dev php-pear
针对不同PHP版本安装对应ssh2版本
- PHP7.4:安装适配的1.3.1版本
pecl install ssh2-1.3.1 - PHP8.x:安装适配的1.4.1及以上版本
pecl install ssh2-1.4.1
配置扩展加载
编译完成后,按照终端提示将 extension=ssh2.so 添加到对应PHP版本的配置文件:
- CLI模式:
/etc/php/[版本号]/cli/php.ini - FPM模式(若使用):
/etc/php/[版本号]/fpm/php.ini
3. 验证扩展加载状态
执行 php -m | grep ssh2,若输出 ssh2 则加载成功。若仍报错:
- 检查配置文件中
extension=ssh2.so的路径是否正确,可通过php -r "echo ini_get('extension_dir');"获取扩展目录,确认ssh2.so存在于该目录 - 执行
ldd $(php -r "echo ini_get('extension_dir');")/ssh2.so检查依赖库是否缺失,重点确认OpenSSL相关库是否正常链接
4. 清理旧扩展残留
若之前安装过不兼容的ssh2版本,先清理残留:
sudo rm -f /usr/lib/php/*/ssh2.so sudo pecl uninstall ssh2
再重新执行编译安装步骤。
内容的提问来源于stack exchange,提问作者Eduardo Chiquito
相关产品推荐
相关产品推荐

