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编程最快明白》第三讲:php数组
Nov 01 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 PHP
php中explode与split的区别介绍
Oct 03 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
php构造方法中析构方法在继承中的表现
Apr 12 PHP
Yii2 assets清除缓存的方法
May 16 PHP
php中mkdir()函数的权限问题分析
Sep 24 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
Oct 18 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类中private属性继承问题分析
2012/11/01 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
php时间戳转换的示例
2014/03/31 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
js实现简易计算器功能
2019/10/18 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
python调用shell的方法
2013/11/20 Python
python实现跨文件全局变量的方法
2014/07/07 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
网上蛋糕店创业计划书
2014/01/24 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
mysql知识点整理
2021/04/05 MySQL
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技
速龙x4-860k处理器相当于i几
2022/04/20 数码科技