FTP Class

CodeIgniter의 FTP 클래스를 이용하면 원격서버에 파일을 전송할 수 있습니다. 원격지 파일들을 이동하거나, 이름 변경 혹은 삭제도 가능하구요 . FTP 클래스는 미러링(mirroring) 함수도 제공합니다. 미러링 함수는 FTP를 이용하여 로컬 폴더의 복사본을 원격지에 만듭니다.

Note

SFTP 와 SSL FTP 은 지원하지 않습니다. 표준FTP만 지원 합니다.

FTP 클래스와 함께하기 Working with the FTP Class

클래스 초기화 Initializing the Class

CodeIgniter에서 제공하는 다른 클래스들과 같이, FTP 클래스도 컨트롤러에서 $this->load->library 함수를 이용하여 초기화 합니다:

$this->load->library('ftp');

한 번 로드되면, FTP객체는 $this->ftp 와 같이 사용합니다.

사용 예제 Usage Examples

본 예제에서는 FTP 연결을 열고 로컬파일을 읽은다음 ASCII 모드로 업로드 합니다. 이때 파일 퍼미션은 755로 설정합니다.

$this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug']        = TRUE;

$this->ftp->connect($config);

$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);

$this->ftp->close();

본 예제에서는 서버에서 파일목록을 추출해 냅니다.

$this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug']        = TRUE;

$this->ftp->connect($config);

$list = $this->ftp->list_files('/public_html/');

print_r($list);

$this->ftp->close();

본 예제에서는 로컬 디렉토리를 서버에 미러링(똑같이 생성)합니다.

$this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug']        = TRUE;

$this->ftp->connect($config);

$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');

$this->ftp->close();

클래스 레퍼런스 Class Reference

class CI_FTP
connect([$config = array()])
인수:
  • $config (array) – Connection values
반환값:

TRUE on success, FALSE on failure

반환형:

bool

FTP에 연결하여 로그온합니다. 연결정보는 배열로 함수에 전달하거나, 설정파일에 저장할 수 있습니다.

아래 예제는 연결정보를 직접 설정하는법을 보여줍니다:

$this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['port']     = 21;
$config['passive']  = FALSE;
$config['debug']    = TRUE;

$this->ftp->connect($config);

FTP 연결정보를 설정파일에 저장하기 Setting FTP Preferences in a Config File

ftp.php파일을 만든후 $config 배열을 그 파일안에 추가합니다. 그 다음에 application/config/ftp.php 로 저장하면 자동으로 설정을 읽어오게 됩니다.

사용 가능한 연결 옵션

옵션명 기본값 설명
hostname n/a FTP 호스트 이름. 일반적으로 ftp.example.com 등과 같습니다.
username n/a FTP 사용자명
password n/a FTP 암호
port 21 FTP 접속포트
debug FALSE TRUE/FALSE (boolean): 에러 메세지를 표시하기 위해 디버깅을 활성화 시킬지 안시킬지 설정.
passive TRUE TRUE/FALSE (boolean): 패시브모드(passive mode)로 할 것인지 여부설정.
upload($locpath, $rempath[, $mode = 'auto'[, $permissions = NULL]])
인수:
  • $locpath (string) – Local file path
  • $rempath (string) – Remote file path
  • $mode (string) – FTP mode, defaults to ‘auto’ (options are: ‘auto’, ‘binary’, ‘ascii’)
  • $permissions (int) – File permissions (octal)
반환값:

TRUE on success, FALSE on failure

반환형:

bool

파일을 서버에 업로드 합니다. 이때 반드시 로컬경로와 서버경로를 넘겨주어야 합니다. 필요하다면 모드 및 퍼미션을 설정할 수도 있습니다. 예제:

$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);

만약 auto 로 설정되어있다면 업로드할 파일의 확장자를 기준으로 모드를 설정합니다.

퍼미션 설정은 8진수를 이용하여 4번째 파라미터로 설정하면 됩니다.

download($rempath, $locpath[, $mode = 'auto'])
인수:
  • $rempath (string) – Remote file path
  • $locpath (string) – Local file path
  • $mode (string) – FTP mode, defaults to ‘auto’ (options are: ‘auto’, ‘binary’, ‘ascii’)
반환값:

TRUE on success, FALSE on failure

반환형:

bool

서버에서 파일을 다운로드합니다. 원격 및 로컬 경로를 지정해야 합니다. 옵션으로 모드를 지정할 수도 있습니다. 예제:

$this->ftp->download('/public_html/myfile.html', '/local/path/to/myfile.html', 'ascii');

auto 는 소스파일의 확장자를 통해 모드를 자동설정합니다.

다운로드에 실패한 경우 FALSE를 반환합니다. (로컬 파일에 쓰기 권한이없는 경우 포함)

rename($old_file, $new_file[, $move = FALSE])
인수:
  • $old_file (string) – Old file name
  • $new_file (string) – New file name
  • $move (bool) – Whether a move is being performed
반환값:

TRUE on success, FALSE on failure

반환형:

bool

파일이름을 바꿉니다. 원래 파일경로 및 새로운파일 경로를 파라미터로 넘겨야 합니다.

// Renames green.html to blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');
move($old_file, $new_file)
인수:
  • $old_file (string) – Old file name
  • $new_file (string) – New file name
반환값:

TRUE on success, FALSE on failure

반환형:

bool

파일을 이동합니다. 소스(source)와 목적지경로(destination)를 넘겨줍니다:

// Moves blog.html from "joe" to "fred"
$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');

Note

대상 파일 이름이 다른 경우 파일명이 변경됩니다.

delete_file($filepath)
인수:
  • $filepath (string) – Path to file to delete
반환값:

TRUE on success, FALSE on failure

반환형:

bool

파일을 삭제합니다. 지울 파일의 경로를 넘겨줍니다.

$this->ftp->delete_file('/public_html/joe/blog.html');
delete_dir($filepath)
인수:
  • $filepath (string) – Path to directory to delete
반환값:

TRUE on success, FALSE on failure

반환형:

bool

디렉토리를 지웁니다. 이때 디렉토리가 포함하고있는 모든 것을 같이 지웁니다. 지울 디렉토리를 넘겨줍니다. 이때 마지막에 / 를 붙여야 합니다.

Important

이 함수를 사용하실 때는 매우 주의하셔야 합니다. 디렉토리를 삭제할 때 하위디렉토리까지 모두 재귀적으로 삭제합니다. 그러므로 넘겨주는 경로가 잘못된 경로가 아닌지 확실하게 확인해야 합니다.list_files() 함수를 통해서 경로가 옳은지 먼저 확인하시는 것이 좋습니다.

$this->ftp->delete_dir('/public_html/path/to/folder/');
list_files([$path = '.'])
인수:
  • $path (string) – Directory path
반환값:

An array list of files or FALSE on failure

반환형:

array

서버에서 파일목록을 추출하여 배열로 리턴합니다. 원하는 디렉토리의 경로를 넘겨줍니다.

$list = $this->ftp->list_files('/public_html/');
print_r($list);
mirror($locpath, $rempath)
인수:
  • $locpath (string) – Local path
  • $rempath (string) – Remote path
반환값:

TRUE on success, FALSE on failure

반환형:

bool

로컬 폴더의 포함내용 전부를 재귀적으로 읽은후 서버에 동일한 폴더를 생성합니다. 어떤 디렉토리 구조라도 서버에서 다시 생성됩니다. 파라미터로 소스경로와 목적지 경로를 넘겨줍니다:

$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
mkdir($path[, $permissions = NULL])
인수:
  • $path (string) – Path to directory to create
  • $permissions (int) – Permissions (octal)
반환값:

TRUE on success, FALSE on failure

반환형:

bool

서버에 디렉토리를 생성합니다. 생성하고자 하는 폴더의 경로를 넘겨줍니다. 이때 마지막에 / 를 붙여줍니다.

퍼미션은 8진수를 사용할 수도 있으며 두 번째 파라미터로 넘겨줍니다.

// Creates a folder named "bar"
$this->ftp->mkdir('/public_html/foo/bar/', 0755);
chmod($path, $perm)
인수:
  • $path (string) – Path to alter permissions for
  • $perm (int) – Permissions (octal)
반환값:

TRUE on success, FALSE on failure

반환형:

bool

파일 퍼미션을 설정합니다. 퍼미션을 적용하고자 하는 파일이나 폴더 경로를 넘겨줍니다:

// Chmod "bar" to 755
$this->ftp->chmod('/public_html/foo/bar/', 0755);
changedir($path[, $suppress_debug = FALSE])
인수:
  • $path (string) – Directory path
  • $suppress_debug (bool) – Whether to turn off debug messages for this command
반환값:

TRUE on success, FALSE on failure

반환형:

bool

현재 작업 디렉토리를 지정한 경로로 변경합니다.

The $suppress_debug parameter is useful in case you want to use this method as an is_dir() alternative for FTP.

close()
반환값:TRUE on success, FALSE on failure
반환형:bool

연결을 끊습니다. 업로드가 끝났을 때 이 함수를 사용하는 것이 좋습니다.