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
相关产品推荐
相关产品推荐

