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在Web开发领域的优势
Oct 09 PHP
PHP实现网上点歌(二)
Oct 09 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
php根据操作系统转换文件名大小写的方法
Feb 24 PHP
php使用正则验证中文
Apr 06 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
Laravel路由研究之domain解决多域名问题的方法示例
Apr 04 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
php中socket的用法详解
2014/10/24 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
用python 制作图片转pdf工具
2015/01/30 Python
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
Python模块相关知识点小结
2020/03/09 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
python redis存入字典序列化存储教程
2020/07/16 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
财务主管的岗位职责
2013/12/30 职场文书
初一家长会邀请函
2014/01/31 职场文书
目标责任书格式
2014/07/28 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
MySQL数据库表约束讲解
2022/06/21 MySQL