PHP连接sftp并下载文件的方法教程


Posted in PHP onAugust 26, 2018

前言

sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似。 然而,sFTP 比 FTP 更安全;它通过加密 SSH 传输处理所有操作。

下面这篇文章主要介绍了关于PHP连接sftp并下载文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

方法如下:

首先我们要知道如何在命令行下连接,了解了之后就清楚大概的原理了

命令行连接的方式如下

sftp -P port user@host

如果端口号默认是22的话就不需要端口号的参数,如下

sftp user@host

连接进去之后sftp支持大多数的linux命令,如ls、cd等,但是注意并不是所有的命令都支持,毕竟这是个文件传输的功能,没有太多复杂的命令

上面了解之后我们看下PHP中如何链接

连接sftp

$conf = [
 'channelId' => '',
 'host' => '',
 'port' => '',
 'user' => '',
 'password' => ''
];
$conn = ssh2_connect($conf['host'], $conf['port']);

if (!ssh2_auth_password($conn, $conf['user'], $conf['password'])) {
 var_dump('ftps 连接失败');
}

获取远程文件

第一步没有问题,说明我们已经进去了sftp里面,然后就可以进行文件下载

设置要获取的远程文件

$remotFile = '/file/xxx/xxx/xxx.txt';

配置本地存储文件的路径

$localPath = '/storage/data';

// 创建文件夹
if (!is_dir($localPath)) {
 $dir = mkdir($localPath, 0777, true);
 if (!$dir) {
  return false;
 }
}

设置本地要存储的文件

// 如果文件已存在就覆盖
$localFile = 'xxxxx.txt';

$localRealFile = $localPath . '/' . $localFile;

// 如果文件存在则删除,当然这里也可以根据需求进行修改
if (is_file($localRealFile)) {
 unlink($localRealFile);
}

最后拉取文件并写到本地

$sftp = ssh2_sftp($conn);

$resource = "ssh2.sftp://{$sftp}" . $remotFile;

//远程文件 拷贝到本地
copy($resource, $localRealFile);

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php模板中出现空行解决方法
Mar 08 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
php通过排列组合实现1到9数字相加都等于20的方法
Aug 03 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 PHP
PHP操作Redis数据库常用方法示例
Aug 25 #PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 #PHP
PHP与以太坊交互详解
Aug 24 #PHP
php获取微信基础接口凭证Access_token
Aug 23 #PHP
php对微信支付回调处理的方法
Aug 23 #PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 #PHP
Yii2语言国际化自动配置详解
Aug 22 #PHP
You might like
php下实现农历日历的代码
2007/03/07 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
python算法演练_One Rule 算法(详解)
2017/05/17 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
从0开始的Python学习016异常
2019/04/08 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
优秀求职信范文分享
2013/12/19 职场文书
辩论赛主持词
2014/03/18 职场文书
硕士生找工作求职信
2014/07/05 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
师范生教育见习总结
2015/06/23 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
Django程序的优化技巧
2021/04/29 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis