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概述.
Oct 09 PHP
PHP下MAIL的另一解决方案
Oct 09 PHP
PHP array_push 数组函数
Dec 26 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
php实例分享之mysql数据备份
May 19 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
php中define用法实例
Jul 30 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 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安全配置 如何配置使其更安全
2011/12/16 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php模拟post提交数据的方法
2015/02/12 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
2020/04/13 PHP
写自已的js类库需要的核心代码
2012/07/16 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
JavaScript字符串对象
2017/01/14 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
python list语法学习(带例子)
2013/11/01 Python
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
出纳员岗位职责风险
2014/03/06 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server