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伪静态页面函数附使用方法
Jun 20 PHP
php相当简单的分页类
Oct 02 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
PHP编码转换
Nov 05 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
php提交post数组参数实例分析
Dec 17 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 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脚本的10个技巧(2)
2006/10/09 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
2017/11/27 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
安全宣传标语口号
2014/06/06 职场文书
倡议书格式
2014/08/30 职场文书
学习作风建设心得体会
2014/10/22 职场文书
表扬稿格式范文
2015/01/16 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers