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 相关文章推荐
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
php实现转换ubb代码的方法
Jun 18 PHP
php判断访问IP的方法
Jun 19 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
解决tp5在nginx下修改配置访问的问题
Oct 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
php计算多维数组中所有值总和的方法
2015/06/24 PHP
详解PHP中的PDO类
2015/07/06 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
脚本收藏iframe
2006/07/21 Javascript
Hutia 的 JS 代码集
2006/10/24 Javascript
javascript数组使用调用方法汇总
2007/12/08 Javascript
Javascript 解疑
2009/11/11 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Python使用wxPython实现计算器
2018/01/30 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
Python reques接口测试框架实现代码
2020/07/28 Python
公休请假条
2014/04/11 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技