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图片上传类带图片显示
Nov 25 PHP
dedecms模板标签代码官方参考
Mar 17 PHP
PHP连接access数据库
Mar 27 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
Yii针对添加行的增删改查操作示例
Oct 18 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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
Codeigniter校验ip地址的方法
2015/03/21 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
Python中的exec、eval使用实例
2014/09/23 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
python友情链接检查方法
2015/07/08 Python
python 生成器协程运算实例
2017/09/04 Python
Django 静态文件配置过程详解
2019/07/23 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
详解Python中import机制
2020/09/11 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
生育关怀行动实施方案
2014/03/26 职场文书
公司活动总结怎么写
2014/06/25 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
医院见习报告范文
2014/11/03 职场文书
消防演习通知
2015/04/25 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
贷款工资证明范本
2015/06/12 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
大学开学感言
2015/08/01 职场文书
创业计划书之餐饮
2019/09/02 职场文书
Python中使用ipython的详细教程
2021/06/22 Python