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 相关文章推荐
改进的IP计数器
Oct 09 PHP
一段防盗连的PHP代码
Dec 06 PHP
php预定义常量
Dec 25 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
thinkPHP2.1自定义标签库的导入方法详解
Jul 20 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
ThinkPHP实现登录退出功能
Jun 29 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
js确定对象类型方法
2012/03/30 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
python数据类型_字符串常用操作(详解)
2017/05/30 Python
Python机器学习之决策树算法
2017/12/22 Python
解决python replace函数替换无效问题
2020/01/18 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
幼儿园中秋节活动反思
2014/02/16 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
反邪教观后感
2015/06/11 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
python实现双向链表原理
2022/05/25 Python
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS