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 相关文章推荐
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
php5.3 废弃函数小结
May 16 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
php简单的上传类分享
May 15 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
thinkPHP分页功能实例详解
May 05 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 PHP
php输出形式实例整理
May 05 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中并发读写文件冲突的解决方案
2013/10/25 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中sets模块的用法实例
2014/09/30 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
音乐教育感言
2014/03/05 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
项目投资意向书范本
2015/05/09 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
如何在C++中调用Python
2021/05/21 Python
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android