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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
PHP json_decode函数详细解析
Feb 17 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
php实现上传图片文件代码
Jul 19 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
PHP中list方法用法示例
Dec 01 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 PHP
解决php extension 加载顺序问题
Aug 16 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
js document.write()使用介绍
2014/02/21 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
详解JavaScript 事件流
2020/09/02 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
python检测某个变量是否有定义的方法
2015/05/20 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
python编写计算器功能
2019/10/25 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
python图片合成的示例
2020/11/09 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
离婚协议书应该怎么写
2014/10/12 职场文书
2015年试用期工作总结
2014/12/12 职场文书
周末问候语大全
2015/11/10 职场文书
高三生物教学反思
2016/02/22 职场文书