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 相关文章推荐
yii操作session实例简介
Jul 31 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
Sep 16 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
微信公众号开发之微信公共平台消息回复类实例
Nov 14 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
微信封装的调用微信签名包的类库
Jun 08 PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
PHP常用日期加减计算方法实例小结
Jul 31 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
用header 发送cookie的php代码
2007/03/16 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python处理大数字的方法
2015/05/27 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
python在文本开头插入一行的实例
2018/05/02 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
旅游市场营销方案
2014/03/09 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
郭明义电影观后感
2015/06/08 职场文书
贫困生证明范文
2015/06/16 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript