php SFTP檔案上傳
阿新 • • 發佈:2018-12-15
TP3.2存放類檔案目錄下(Common/Org/)新建php檔案 sftp.class.php
php沒有SFTP,使用的是SSH擴充套件
<?php /******************************************** * MODULE:SFTP類 *******************************************/ class sftp{ // 初始配置為NULL private $config =NULL ; // 連線為NULL private $conn = NULL; // 是否使用祕鑰登陸 private $use_pubkey_file= false; // 初始化 public function init($config){ $this->config = $config ; } // 連線ssh ,連線有兩種方式(1) 使用密碼 // (2) 使用祕鑰 public function connect(){ $methods['hostkey'] = $this->use_pubkey_file ? 'ssh-rsa' : [] ; $this->conn = ssh2_connect($this->config['host'], $this->config['port'], $methods); //(1) 使用祕鑰的時候 if($this->use_pubkey_file){ // 使用者認證協議 $rc = ssh2_auth_pubkey_file($this->conn,$this->config['user'],$this->config['pubkey_file'],$this->config['privkey_file'],$this->config['passphrase']); //(2) 使用登陸使用者名稱字和登陸密碼 }else{ $rc = ssh2_auth_password( $this->conn, $this->config['user'],$this->config['passwd']); } return $rc ; } // 傳輸資料 傳輸層協議,獲得資料 public function download($remote, $local){ return ssh2_scp_recv($this->conn, $remote, $local); } //傳輸資料 傳輸層協議,寫入ftp伺服器資料 public function upload($remote, $local,$file_mode=0664){ return ssh2_scp_send($this->conn, $local, $remote, $file_mode); } // 刪除檔案 public function remove($remote){ $sftp = ssh2_sftp($this->conn); $rc = false; if (is_dir("ssh2.sftp://{$sftp}/{$remote}")) { $rc = false ; // ssh 刪除資料夾 $rc = ssh2_sftp_rmdir($sftp, $remote); } else { // 刪除檔案 $rc = ssh2_sftp_unlink($sftp, $remote); } return $rc; } } ?>
使用方法
import("Common/Org/sftp"); $config = array("host"=>"host","user"=>"","port"=>"","passwd"=>""); $handle = new \sftp(); $handle->init($config); $rc = $handle->connect(); //上傳,成功返回true dump($handle->upload("remotePath","localPath"));exit; //下載,成功返回true dump($handle->download("remotePath","localPath"));exit;
使用時要注意擴充套件和接收端伺服器安裝
PHP之SFTP擴充套件庫編譯安裝注意事項
1、下載檔案: wget http://www.libssh2.org/download/libssh2-1.4.2.tar.gz wget http://pecl.PHP.net/get/ssh2-0.12.tgz2、安裝 libssh2 在安裝 SS2 tar -zxvf libssh2-1.4.2.tar.gz cd libssh2-1.4.2 ./configure --prefix=/usr/local/libssh2 make make test make install3、SSH安裝 tar -zxvf ssh2-0.12.tgz cd ssh2-0.12 phpize(個人目錄不同,例如:/usr/local/php/bin/phpize) ./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2 --with-php-config=/usr/local/php/bin/php-config //找到php-config路徑 make make test make install
4、安裝完成
安裝完成後會在 /usr/local/php/lib/php/extensions目錄下生成一些檔案,可以不管
找到php.ini檔案,開啟後加入:
extension=ssh2.so