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 02 PHP
mysql 性能的检查和优化方法
Jun 21 PHP
php读取html并截取字符串的简单代码
Nov 30 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
php遍历文件夹下的所有文件和子文件夹示例
Mar 20 PHP
php实现统计网站在线人数的方法
May 12 PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
TP5框架实现签到功能的方法分析
Apr 05 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 json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
php使用curl并发减少后端访问时间的方法分析
2016/05/12 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
python实现决策树分类(2)
2018/08/30 Python
python库matplotlib绘制坐标图
2019/10/18 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
python 实现超级玛丽游戏
2020/11/25 Python
温泉秘密:Onsen Secret
2020/07/06 全球购物
一套C#面试题
2013/10/09 面试题
事假请假条范文
2014/04/11 职场文书
选秀节目策划方案
2014/06/06 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
雨花台导游词
2015/02/06 职场文书
听证通知书
2015/04/24 职场文书
学校捐书活动总结
2015/05/08 职场文书
2015年林业工作总结
2015/05/14 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
Python sklearn分类决策树方法详解
2022/09/23 Python