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 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
1.PHP简介
Oct 09 PHP
在PHP中使用灵巧的体系结构
Oct 09 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
Aug 15 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
php基础教程
Aug 26 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 PHP
PHP7 foreach() 函数修改
Mar 09 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
星际原理概述
2020/03/04 星际争霸
php 静态页面中显示动态内容
2009/08/14 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
Python中分数的相关使用教程
2015/03/30 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
电子商务优秀毕业生求职信
2014/07/11 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
老干部工作汇报材料
2014/10/28 职场文书
业务员岗位职责
2015/02/03 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
毕业论文致谢范文
2015/05/14 职场文书
Win11快速关闭所有广告推荐
2022/04/19 数码科技
apache ftpserver搭建ftp服务器
2022/05/20 Servers