You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级系统与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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:37:15