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新手入门学习方法
May 08 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
PHP return语句的另一个作用
Jul 30 PHP
php中的ini配置原理详解
Oct 14 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
php之curl设置超时实例
Nov 03 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
php查询whois信息的方法
Jun 08 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
PHP实现Session入库/存入redis的方法
May 04 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
你可能不再需要JQUERY
2021/03/09 Javascript
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JavaScript访问样式表代码
2010/10/15 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
TensorFlow变量管理详解
2018/03/10 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python 杀死自身进程的实现方法
2019/07/01 Python
python手写均值滤波
2020/02/19 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
企业门卫岗位职责
2013/12/12 职场文书
中学生班主任评语
2014/01/30 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
校庆团日活动总结
2014/08/28 职场文书
授权委托书怎么写
2014/09/25 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript