PHP SFTP實現上傳下載功能詳細分析

來源:互聯網
上載者:User
這篇文章主要為大家詳細介紹了PHP SFTP實現上傳下載功能,具有一定的參考價值,感興趣的小夥伴們可以參考一下

一、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(下載連結)

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 擴充,表示安裝成功

三、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);   } }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.