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的输入输出流
Feb 14 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
php中cookie的使用方法
Mar 29 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
php post大量数据时发现数据丢失问题解决方法
Jun 20 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
简单谈谈 php 文件锁
Feb 19 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
php实现的三个常用加密解密功能函数示例
Nov 06 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 日期加减的类,很不错
2009/10/10 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
为你总结一些php信息函数
2015/10/21 PHP
PHP线程的内存回收问题
2016/07/08 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
jquery禁用右键示例
2014/04/28 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python urlopen()函数 示例分享
2014/06/12 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
工商企业管理应届生求职信
2013/11/03 职场文书
怀念母亲教学反思
2014/04/28 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
先进个人推荐材料
2014/12/29 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL