PHP SFTP 업로드 및 다운로드 기능 구현

1.SFTP 소개:
SSH 프로 토 콜 을 사용 하여 FTP 전송 을 하 는 프로 토 콜 을 SFTP(보안 파일 전송)라 고 합 니 다.Sftp 와 Ftp 는 모두 파일 전송 프로 토 콜 입 니 다.구별:sftp 는 ssh 에 포 함 된 프로 토 콜(ssh 는 암호 화 된 telnet 프로 토 콜)입 니 다. sshd 서버 가 시작 되면 사용 할 수 있 고 sftp 보안 이 높 으 며 ftp 서버 가 시작 되 지 않 아 도 됩 니 다.sftp=ssh+ftp(보안 파일 전송 프로 토 콜).ftp 는 명문 전송 이기 때문에, 안전성 이 없고 sftp 는 ssh 를 기반 으로 전송 내용 이 암호 화 되 어 비교적 안전 합 니 다.현재 네트워크 가 안전 하지 않 습 니 다.예전 에 telnet 을 사 용 했 던 것 은 모두 ssh 2(SSH 1 이 풀 렸 습 니 다)로 바 뀌 었 습 니 다.
sftp 이 도 구 는 ftp 용법 과 같 습 니 다.그러나 전송 파일 은 ssl 을 통 해 암호 화 되 어 있어 캡 처 되 더 라 도 풀 수 없습니다.또한 sftp 는 ftp 기능 보다 파일 속성 설정 이 많 습 니 다. 
2.SSH 2 확장 설정
1.  다운로드 주소:http://windows.php.net/downloads/pecl/releases/ssh2/0.12/
자신의 phop 버 전에 따라 확장 팩 을 선택 하 십시오.여 기 는 phop 5.3 을 사용 하기 때문에 제 가 다운로드 한 것 은 phop 입 니 다.ssh2-0.12-5.3-ts-vc9-x86.zip( 링크 다운로드

2.압축 을 풀 면 세 개의 파일 이 있 습 니 다.libssh 2.dll,ppssh.dll、php_ssh2.pdb。 
3.phpssh.dll、php_ssh 2.pdb 는 phop 확장 디 렉 터 리 아래 phop/ext/아래 에 놓 습 니 다. 
4.libssh 2.dll 을 c:/windows/system 32 와 c:/windows/syswow 64 각각 1 부 로 복사 합 니 다. 
5.php.ini 에 extension=php 추가ssh2.dll
6.아파 치 를 다시 시작 하고 phpinfo()를 출력 한다.SSH 2 확장 이 나타 나 설치 성공 을 표시 합 니 다.

3.SFTP 코드 데모
호출 코드

 $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); 
 
 }
 
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기