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 相关文章推荐
一个改进的UBB类
Oct 09 PHP
木翼下载系统中说明的PHP安全配置方法
Jun 16 PHP
PHP HTML代码串 截取实现代码
Jun 29 PHP
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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可逆加密/解密函数分享
2012/09/25 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
如何用php获取文件名后缀
2013/06/09 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
webpack4简单入门实例
2018/09/06 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
英语教学随笔感言
2014/02/20 职场文书
趣味运动会策划方案
2014/06/02 职场文书
市场调查策划方案
2014/06/10 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
单身证明范本
2015/06/15 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL