当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP连接sftp并下载文件的方法教程

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-26 10:19:26 浏览: 评论:0 

前言

sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似。 然而,sFTP 比 FTP 更安全;它通过加密 SSH 传输处理所有操作。

下面这篇文章主要介绍了关于PHP连接sftp并下载文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

方法如下:

首先我们要知道如何在命令行下连接,了解了之后就清楚大概的原理了

命令行连接的方式如下

sftp -P port user@host

如果端口号默认是22的话就不需要端口号的参数,如下

sftp user@host

连接进去之后sftp支持大多数的linux命令,如ls、cd等,但是注意并不是所有的命令都支持,毕竟这是个文件传输的功能,没有太多复杂的命令

上面了解之后我们看下PHP中如何链接

连接sftp

  1. $conf = [ 
  2.  'channelId' => ''
  3.  'host' => ''
  4.  'port' => ''
  5.  'user' => ''
  6.  'password' => '' 
  7. ]; 
  8. $conn = ssh2_connect($conf['host'], $conf['port']); 
  9.  
  10. if (!ssh2_auth_password($conn$conf['user'], $conf['password'])) { 
  11.  var_dump('ftps 连接失败'); 

获取远程文件

第一步没有问题,说明我们已经进去了sftp里面,然后就可以进行文件下载

设置要获取的远程文件

$remotFile = '/file/xxx/xxx/xxx.txt';

配置本地存储文件的路径

  1. $localPath = '/storage/data'
  2.  
  3. // 创建文件夹 
  4. if (!is_dir($localPath)) { 
  5.  $dir = mkdir($localPath, 0777, true); 
  6.  if (!$dir) { 
  7.   return false; 
  8.  } 

设置本地要存储的文件

  1. // 如果文件已存在就覆盖 
  2. $localFile = 'xxxxx.txt'
  3.  
  4. $localRealFile = $localPath . '/' . $localFile
  5.  
  6. // 如果文件存在则删除,当然这里也可以根据需求进行修改 
  7. if (is_file($localRealFile)) { 
  8.  unlink($localRealFile); 

最后拉取文件并写到本地

  1. $sftp = ssh2_sftp($conn); 
  2.  
  3. $resource = "ssh2.sftp://{$sftp}" . $remotFile
  4.  
  5. //远程文件 拷贝到本地 
  6. copy($resource$localRealFile);

Tags: PHP连接sftp PHP下载文件

分享到: