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访问查询mysql数据的三种方法
Oct 09 PHP
第一节--面向对象编程
Nov 16 PHP
一个好用的分页函数
Nov 16 PHP
PHP查询网站的PR值
Oct 30 PHP
PHP图像处理类库及演示分享
May 17 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
php pdo操作数据库示例
Mar 10 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 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获取当月最后一天函数分享
2015/02/02 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
Python 调用DLL操作抄表机
2009/01/12 Python
Python获取文件ssdeep值的方法
2014/10/05 Python
python3抓取中文网页的方法
2015/07/28 Python
python ansible服务及剧本编写
2017/12/29 Python
简单了解python的内存管理机制
2019/07/08 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
汽车专业毕业生自荐信
2013/11/03 职场文书
化学实验员岗位职责
2013/12/28 职场文书
北体毕业生求职信
2014/02/28 职场文书
母校寄语大全
2014/04/10 职场文书
活动总结的格式
2014/05/07 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
《灰雀》教学反思
2016/02/19 职场文书