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 相关文章推荐
ajax缓存问题解决途径
Dec 06 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
Apr 19 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
PHP网络操作函数汇总
May 18 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
Yii视图CGridView实现操作按钮定义地址示例
Jul 14 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
wordpress网站转移到本地运行测试的方法
Mar 15 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 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递归列出所有文件和目录的代码
2008/09/10 PHP
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
img标签中onerror用法
2009/08/13 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
实习生自荐信范文分享
2013/11/27 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL
SQL SERVER中的流程控制语句
2022/05/25 SQL Server