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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
建立动态的WML站点(三)
Oct 09 PHP
一个用于网络的工具函数库
Oct 09 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
简单了解WordPress开发中update_option()函数的用法
Jan 11 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
用php定义一个数组最简单的方法
Oct 04 PHP
在Laravel 中实现是否关注的示例
Oct 22 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 strncasecmp字符串比较的小技巧
2011/01/04 PHP
php中apc缓存使用示例
2013/12/25 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
Python 的 Socket 编程
2015/03/24 Python
Python实现读取并保存文件的类
2017/05/11 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
python3字符串输出常见面试题总结
2020/12/01 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
Ratchet 模态框的实现
2020/08/19 HTML / CSS
电大奖学金获奖感言
2014/08/14 职场文书
三八节活动简报
2015/07/20 职场文书
聘用合同范本
2015/09/21 职场文书
财务人员入职担保书
2015/09/22 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
浅谈Vue的computed计算属性
2022/03/21 Vue.js