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 session 错误
May 21 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
php防止sql注入代码实例
Dec 18 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php调用新浪短链接API的方法
Nov 08 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
PHP实现限制IP访问的方法
Apr 20 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
一百多行python代码实现抢票助手
2018/09/25 Python
带你认识Django
2019/01/15 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
一年级班主任寄语
2014/01/19 职场文书
中药学自荐信
2014/06/15 职场文书
付款委托书范本
2014/10/05 职场文书
春风化雨观后感
2015/06/11 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL