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漏洞小结
Feb 05 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
php实现统计邮件大小的方法
Aug 06 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
php通过curl模拟登陆DZ论坛
May 11 PHP
百度地图API使用方法详解
Aug 25 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 PHP
php遍历解析xml字符串的方法
May 05 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 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 和 MySQL 时区的一点总结
2008/03/26 PHP
PHP无刷新上传文件实现代码
2011/09/19 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python 中的int()函数怎么用
2017/10/17 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
python数据挖掘需要学的内容
2019/06/23 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
非常详细的C#面试题集
2016/07/13 面试题
商务英语专业自荐信
2013/10/14 职场文书
班主任寄语大全
2014/04/04 职场文书
民事和解协议书格式
2014/11/29 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
公司年夜饭通知
2015/04/25 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers