본문 바로가기
기타

SFTP 파일 업로드 하기 - phpseclib

by zgabriel 2025. 3. 13.
728x90

 

PHP 에서 SFTP 서버에 파일을 업로드할일이 생겼다. 

기존 FTP 처럼 손쉽게 되면 참~ 좋겠지만 불행히도 쉽지많은 않았다.

결론적으로 서버에 phpseclib를 설치하지 않고 폴더만 복사해 사용할 수 있는


방법을 찾았다. 

phpseclib3를 사용해야해서 PHP5 버전은 불가능하다. 만약, PHP5 버전에 사용할 수 있는 방법이

있다면 공유 좀 ....

일단, phpseclib 폴더를 서버의 최상위 폴더에 복사한 후 소스는 아래와 같다. 

---------------------------------------------------------------------------------

ini_set("display_errors","1");
require_once __DIR__ . '/phpseclib/autoloader.php';

use phpseclib3\Net\SFTP;
use phpseclib3\Crypt\PublicKeyLoader;

// SFTP 서버 정보
$host = '';
$port = 22;
$username = '';
$password = '';
$remoteFilePath = '/test/test.gif';
$localFilePath = __DIR__ . '/img/test.gif';

try {
    // SFTP 객체 생성
    $sftp = new SFTP($host, $port);

    // 비밀번호 로그인
    if (!$sftp->login($username, $password)) {
        throw new Exception('SFTP 로그인 실패');
    }

    // 파일 업로드
    if (!$sftp->put($remoteFilePath, file_get_contents($localFilePath))) {
        throw new Exception('파일 업로드 실패');
    }

    echo "파일 업로드 성공: $remoteFilePath\n";
} catch (Exception $e) {
    echo "에러 발생: " . $e->getMessage() . "\n";
}

 

phpseclib.zip
0.56MB