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实现小型站点广告管理(修正版)
Oct 09 PHP
用header 发送cookie的php代码
Mar 16 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
php分页思路以及在ZF中的使用
May 30 PHP
php数组的概述及分类与声明代码演示
Feb 26 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
php htmlentities()函数的定义和用法
May 13 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
php函数式编程简单示例
Aug 08 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 MSSQL 存储过程的方法
2008/12/24 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
python最小生成树kruskal与prim算法详解
2019/01/17 Python
Python 解决相对路径问题:"No such file or directory"
2020/06/05 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
英国森林假期:Forest Holidays
2021/01/01 全球购物
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
员工拾金不昧表扬信
2014/01/09 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
2015中学学校工作总结
2015/07/20 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
Python中zipfile压缩包模块的使用
2021/05/14 Python