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 相关文章推荐
真正的ZIP文件操作类(php)
Jul 21 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
php一些错误处理的方法与技巧总结
Aug 10 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
Jul 07 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
PHP7 其他修改
Mar 09 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
Terran建筑一览
2020/03/14 星际争霸
杏林同学录(五)
2006/10/09 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
利用python进行文件操作
2020/12/04 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
《狼和小羊》教学反思
2014/04/20 职场文书
认错检讨书
2014/10/02 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
羊脂球读书笔记
2015/06/30 职场文书
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js