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个人网站架设连环讲(二)
Oct 09 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
php可变长参数处理函数详解
Feb 22 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
PHP实现的回溯算法示例
Aug 15 PHP
php实现QQ小程序发送模板消息功能
Sep 18 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入门源程序
2006/10/09 PHP
php你的验证码安全码?
2007/01/02 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
深入理解vue中的$set
2017/06/01 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
信息滚动效果的实例讲解
2017/09/18 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python使用PyFetion来发送短信的例子
2014/04/22 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
Python如何实现远程方法调用
2020/08/07 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
医药营销专业个人自荐信
2013/09/29 职场文书
市场部专员岗位职责
2013/11/30 职场文书
季度思想汇报
2014/01/01 职场文书
业务内勤岗位职责
2014/04/30 职场文书
环保倡议书300字
2014/05/15 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python