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 연결을 끊습니다. 업로드가 끝났을 때 이 함수를 사용하는 것이 좋습니다.