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 imagecreatetruecolor 创建高清和透明图片代码小结
May 15 PHP
php HandlerSocket的使用
May 02 PHP
php中日期加减法运算实现代码
Dec 08 PHP
基于PHP生成静态页的实现方法
May 10 PHP
thinkphp实现数组分页示例
Apr 13 PHP
PHP利用MySQL保存session的实现思路及示例代码
Sep 09 PHP
php网站被挂木马后的修复方法总结
Nov 06 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
关于Laravel Route重定向的一个注意点
Jan 16 PHP
PHP基于socket实现客户端和服务端通讯功能
Jul 13 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 03 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版(3)
2006/10/09 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
PHP类的反射用法实例
2014/11/03 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
Prototype String对象 学习
2009/07/19 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
js 通用订单代码
2013/12/23 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
JS高级技巧(简洁版)
2018/07/29 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
Python连接Impala实现步骤解析
2020/08/04 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
蛋白质世界:Protein World
2017/11/23 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
学习张丽丽心得体会
2014/09/03 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
优秀党员事迹材料
2014/12/18 职场文书
2015年技术员工作总结
2015/04/10 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
python使用torch随机初始化参数
2022/03/22 Python
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js