sftp上傳到遠程服務器


開發遇到一個需求,需要將圖片通過sftp上傳到遠程服務器上,之前沒用過這個功能,折騰了我好幾天才搞定,下面記錄下我的處理方法:

$sftp = 'ssh2.sftp://';
//連接sftp
$conn = ssh2_connect('IP','端口');
//登錄 ssh2_auth_password(
$conn,"user","password"); $result = ssh2_sftp($conn);
//判斷是否存在目錄HM(特別注意賬號登錄進來后默認的文件路徑是不是根目錄,否則找不到文件夾,也不能創建文件夾,可通過pwd命令查看當前文件夾路徑
if (!file_exists($sftp.$result.'/HM/')) {   $dir = ssh2_sftp_mkdir($result, '/HM/',0777,true); }else{   $dir = true; } if($dir){   //realpath方法將相對路徑轉為絕對路徑   $send = ssh2_scp_send($conn,realpath($localfile),$remotefile);
  //開始這種方法是測試可行的,后來ftp賬號權限被修改,導致進不到根目錄,然后不知為什么就不行了,之后就只能曲線救國采用下面的方法
}else{   $send = false; }

 

//遠程服務器創建一個文件
$sftpStream
= fopen($sftp.$result.$remotefilename, 'w'); //若報(failed to open stream: operation failed)錯誤,需要將$result改為intval($result)
//獲取本地文件
$data_to_send = file_get_contents(realpath($localfilename));
//將本地文件寫入到遠程文件中
$send = fwrite($sftpStream, $data_to_send);
//關閉文件流
fclose($sftpStream);

 

linux下命令行連接sftp

sftp -oPort=22 username@ip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM