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读取IMAP邮件
Oct 09 PHP
php基础知识:函数基础知识
Dec 13 PHP
php 中的str_replace 函数总结
Apr 27 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
PHP加密解密实例分析
Dec 25 PHP
PHP session会话操作技巧小结
Sep 27 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
Laravel框架分页实现方法分析
Jun 12 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报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
js 中 document.createEvent的用法
2010/08/29 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
jqTransform美化表单
2015/10/10 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
python中的五种异常处理机制介绍
2014/09/02 Python
Python中的__SLOTS__属性使用示例
2015/02/18 Python
Python中的choice()方法使用详解
2015/05/15 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
python re模块findall()函数实例解析
2018/01/19 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
《一件运动衫》教学反思
2014/02/19 职场文书
测控技术自荐信
2014/06/05 职场文书
电子专业求职信
2014/06/19 职场文书
运动会广播稿200字
2014/10/18 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
培训督导岗位职责
2015/04/10 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
python多次执行绘制条形图
2022/04/20 Python