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

PHP7.3连接操作SFTP服务器报ssh2_connect未定义错误如何解决

问题解答

1 SSH2扩展对PHP7的适配性

SSH2扩展完全适配PHP7系列版本(覆盖7.0~7.4全版本,同时也支持PHP8系列),你遇到的Call to undefined function ssh2_connect()报错是因为PHP环境未安装或未启用SSH2扩展,而非版本不兼容。

扩展安装方式

  • Debian/Ubuntu 环境:
    执行命令apt install php-ssh2,安装完成后重启PHP-FPM或Apache服务即可生效
  • CentOS/RHEL 环境:
    执行命令yum install php-pecl-ssh2,或通过PECL安装指定适配PHP7的版本:pecl install ssh2-1.3.1,安装完成后在php.ini中添加配置extension=ssh2.so,再重启PHP相关服务
  • Windows 环境:
    下载对应PHP版本、线程安全/非线程安全匹配的ssh2扩展dll文件,放入PHP的ext目录后,在php.ini中添加配置extension=ssh2.dll,重启Web服务即可

2 替代实现方案

更推荐使用纯PHP实现的SFTP类库phpseclib,无需安装任何扩展,兼容性更强,支持所有PHP7+版本,通过Composer即可快速集成。

使用示例

首先通过Composer安装依赖:
composer require phpseclib/phpseclib:~3.0
替换你原有测试代码的实现如下:

<?php
use phpseclib3\Net\SFTP;

try {
    $sftp = new SFTP('HOST', 22);
    if (!$sftp->login('UN', 'PWD')) {
        throw new Exception('SFTP登录失败');
    }
    // 上传文件对应方法
    $sftp->put('/tmp/to_be_received', '/tmp/to_be_sent', SFTP::SOURCE_LOCAL_FILE);
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 22:15:05