PHP SFTP实现上传下载功能


Posted in PHP onJuly 26, 2017

 一、SFTP介绍:

使用SSH协议进行FTP传输的协议叫SFTP(安全文件传输)Sftp和Ftp都是文件传输协议。区别:sftp是ssh内含的协议(ssh是加密的telnet协议), 只要sshd服务器启动了,它就可用,而且sftp安全性较高,它本身不需要ftp服务器启动。 sftp = ssh + ftp(安全文件传输协议)。由于ftp是明文传输的, 没有安全性,而sftp基于ssh,传输内容是加密过的,较为安全。目前网络不太安全,以前用telnet的都改用ssh2(SSH1已被破解)。

sftp这个工具和ftp用法一样。但是它的传输文件是通过ssl加密了的,即使被截获了也无法破解。而且sftp相比ftp功能要多一些,多了一些文件属性的设置。 

二、SSH2扩展配置

1.  下载地址:http://windows.php.net/downloads/pecl/releases/ssh2/0.12/

根据自己的php版本选择 扩展包,这里我使用的是php5.3,所以我下载的是 php_ssh2-0.12-5.3-ts-vc9-x86.zip(下载链接)

PHP SFTP实现上传下载功能

2. 解压完后,会有三个文件,libssh2.dll、php_ssh.dll、php_ssh2.pdb。 

3. 将 php_ssh.dll、php_ssh2.pdb 放到你的 php 扩展目录下 php/ext/ 下。 

4. 将libssh2.dll 复制到 c:/windows/system32 和 c:/windows/syswow64 各一份 

5.在 php.ini中加入 extension=php_ssh2.dll

6.重启Apache, 打印phpinfo(); 会出现 SSH2 扩展,表示安装成功

PHP SFTP实现上传下载功能

三、SFTP 代码DEMO

调用代码

$config = array(
  'host' =>'211.*.*.*', //服务器
  'port' => '23', //端口
  'username' =>'test', //用户名
  'password' =>'*****', //密码
 );
 $ftp = new Sftp($config);
 $localpath="E:/www/new_20170724.csv";
 $serverpath='/new_20170724.csv';
 $st = $ftp->upftp($localpath,$serverpath); //上传指定文件
 if($st == true){
  echo "success";
  
 }else{
  echo "fail";
 }

SFTP 封装类

<?php
/**
 * SFtp上传下载文件
 *
 */
namespace Common\ORG\Util;

class Sftp
{
 
 // 初始配置为NULL
 private $config = NULL;
 // 连接为NULL
 private $conn = NULL;
 // 初始化
 public function __construct($config)
 {
 $this->config = $config;
 $this->connect();
 }
 

 public function connect()
 {
 
 $this->conn = ssh2_connect($this->config['host'], $this->config['port']);
 if( ssh2_auth_password($this->conn, $this->config['username'], $this->config['password']))
 {
  
 }else{ 
  echo "无法在服务器进行身份验证";
 }
 
 }
 
 // 传输数据 传输层协议,获得数据
 public function downftp($remote, $local)
 { 
 $ressftp = ssh2_sftp($this->conn);
 return copy("ssh2.sftp://{$ressftp}".$remote, $local);
 }
 
 // 传输数据 传输层协议,写入ftp服务器数据
 public function upftp( $local,$remote, $file_mode = 0777)
 { 
 $ressftp = ssh2_sftp($this->conn);
 return copy($local,"ssh2.sftp://{$ressftp}".$remote); 
 
 }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
给初学PHP的5个入手程序
Nov 23 PHP
PHP中读写文件实现代码
Oct 20 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
php实现httpclient类示例
Apr 08 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 #PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 #PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 #PHP
php实现微信企业号支付个人的方法详解
Jul 26 #PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 #PHP
浅谈Yii乐观锁的使用及原理
Jul 25 #PHP
PHP异常处理定义与使用方法分析
Jul 25 #PHP
You might like
php中filter_input函数用法分析
2014/11/15 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
javascript中eval函数用法分析
2015/04/25 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python contextlib模块使用示例
2015/02/18 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
餐饮收银员岗位职责
2014/02/07 职场文书
暑期研修感言
2014/02/17 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
opencv检测动态物体的实现
2021/07/21 Python