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中调用ASP.NET的WebService的代码
Apr 22 PHP
discuz加密解密函数使用方法和中文注释
Jan 21 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
php利用事务处理转账问题
Apr 22 PHP
PHP实现QQ空间自动回复说说的方法
Dec 02 PHP
PHP中的session安全吗?
Jan 22 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 PHP
php中访问修饰符的知识点总结
Jan 27 PHP
php输出反斜杠的实例方法
Sep 19 PHP
Laravel 添加多语言提示信息的方法
Sep 29 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
第十四节--命名空间
2006/11/16 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
PHP 图片处理
2020/09/16 PHP
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
python获取交互式ssh shell的方法
2019/02/14 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
基层工作经历证明
2014/01/13 职场文书
教师自我反思材料
2014/02/14 职场文书
大学生励志演讲稿
2014/04/25 职场文书
常务副总经理任命书
2014/06/05 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
大学生助学金感谢信
2015/01/21 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫