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

PHP的ssh2扩展需安装到哪个位置才能在LiteSpeed环境生效?

LiteSpeed环境下lsphp加载ssh2扩展失败解决方法

核心原因

PHP CLI和LiteSpeed配套的lsphp74是完全独立的两套运行环境,你之前安装的ssh2是针对系统全局CLI版本编译的,扩展文件存放在CLI的扩展目录下,和lsphp74的扩展目录、API版本不匹配。哪怕lsphp74已经加载了ssh2的ini配置文件,也无法识别不匹配版本的扩展文件,因此web端phpinfo不会显示ssh2扩展信息。

操作步骤

1. 确认lsphp74的基础配置

不要调用系统全局的php命令,直接用lsphp74自带的二进制查询配置:

/usr/local/lsws/lsphp74/bin/php -i | grep -E "extension_dir|PHP Version"

记录输出的extension_dir路径,默认格式为/usr/local/lsws/lsphp74/lib/php/extensions/[build-suffix],其中[build-suffix]是类似no-debug-non-zts-20190902的版本标识串。

2. 针对lsphp74重新编译ssh2扩展

必须使用lsphp74配套的phpize、php-config编译,才能生成匹配版本的ssh2.so文件:

  • 进入你之前下载的ssh2源码目录(如果源码已删除,重新下载ssh2 1.3.7版本,该版本是最后一个支持PHP7.4的稳定版,更高版本仅兼容PHP8.0+)
  • 清理之前的编译缓存:
make clean
  • 执行lsphp74对应的phpize生成编译配置:
/usr/local/lsws/lsphp74/bin/phpize
  • 指定lsphp74的php-config路径执行配置:
./configure --with-php-config=/usr/local/lsws/lsphp74/bin/php-config
  • 编译并安装扩展:
make && make install

编译完成后终端会输出扩展安装路径,确认该路径和第一步查到的lsphp74 extension_dir路径一致,路径下存在ssh2.so文件即为安装成功。

3. 校验ini配置

打开你之前提到的/usr/local/lsws/lsphp74/etc/php/7.4/mods-available/50-ssh2.ini文件,确认配置内容仅为:

extension=ssh2.so

不要写指向CLI扩展目录的绝对路径,否则会出现版本不匹配导致加载静默失败

4. 重启服务生效

必须完整重启LiteSpeed服务,仅重载PHP进程不会加载新扩展:

# systemd管理的系统执行
systemctl restart lsws

# 通用重启命令
/usr/local/lsws/bin/lswsctrl restart

验证与排错

  1. 先通过lsphp74的命令行校验扩展是否加载成功:
    /usr/local/lsws/lsphp74/bin/php -m | grep ssh2
    
    输出ssh2即代表扩展编译正确。
  2. 刷新web端phpinfo页面,即可检索到ssh2的扩展配置块。
  3. 如果仍未加载,查看LiteSpeed错误日志定位问题,日志默认路径为/usr/local/lsws/logs/error.log:
    • 若出现Unable to initialize module类报错,说明ssh2编译时使用的phpize/php-config版本和lsphp74不匹配,回到第二步重新编译即可
    • 若出现cannot open shared object file类报错,说明系统缺少ssh2依赖的libssh2库,执行对应系统的包管理命令安装libssh2-devel后重新编译即可

内容的提问来源于stack exchange,提问作者Beanno1116

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:03:17