FTP 클래스¶
CodeIgniter의 FTP 클래스를 사용하면 원격 서버로 파일을 전송할 수 있습니다. 원격 파일의 이동, 이름 변경, 삭제도 가능합니다. FTP 클래스에는 FTP를 통해 원격으로 로컬 디렉터리 전체를 재현하는 “미러링” 기능도 포함되어 있습니다.
참고
SFTP 및 SSL FTP 프로토콜은 지원되지 않으며, 표준 FTP만 지원됩니다.
FTP 클래스 사용¶
클래스 초기화¶
CodeIgniter의 대부분의 클래스와 마찬가지로 FTP 클래스는 컨트롤러에서 $this->load->library 함수를 사용하여 초기화합니다:
$this->load->library('ftp');
로드되면 $this->ftp를 사용하여 FTP 객체에 접근할 수 있습니다.
사용 예시¶
이 예시에서는 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 CI_FTP¶
- connect([$config = array()])¶
- 매개변수:
$config (
array) – 연결 설정값
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
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 설정 저장
FTP 설정을 설정 파일에 저장하는 것을 선호한다면, ftp.php라는 새 파일을 만들고 해당 파일에 $config 배열을 추가하세요. 파일을 application/config/ftp.php 에 저장하면 자동으로 사용됩니다.
사용 가능한 연결 옵션
옵션 이름
기본값
설명
hostname
없음
FTP 호스트 이름 (보통 ftp.example.com 형태)
username
없음
FTP 사용자 이름
password
없음
FTP 비밀번호
port
21
FTP 서버 포트 번호
debug
FALSE
TRUE/FALSE (boolean): 오류 메시지 표시를 위해 디버깅 활성화 여부
passive
TRUE
TRUE/FALSE (boolean): 수동 모드 사용 여부
- upload($locpath, $rempath[, $mode = 'auto'[, $permissions = NULL]])¶
- 매개변수:
$locpath (
string) – 로컬 파일 경로$rempath (
string) – 원격 파일 경로$mode (
string) – FTP 모드, 기본값은 ‘auto’ (옵션: ‘auto’, ‘binary’, ‘ascii’)$permissions (
int) – 파일 권한 (8진수)
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
서버로 파일을 업로드합니다. 로컬 경로와 원격 경로를 제공해야 하며, 선택적으로 모드와 권한을 설정할 수 있습니다. 예시:
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
‘auto’ 모드를 사용하면 소스 파일의 확장자를 기반으로 모드가 결정됩니다.
권한을 설정하는 경우 8진수 값으로 전달해야 합니다.
- download($rempath, $locpath[, $mode = 'auto'])¶
- 매개변수:
$rempath (
string) – 원격 파일 경로$locpath (
string) – 로컬 파일 경로$mode (
string) – FTP 모드, 기본값은 ‘auto’ (옵션: ‘auto’, ‘binary’, ‘ascii’)
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
서버에서 파일을 다운로드합니다. 원격 경로와 로컬 경로를 제공해야 하며, 선택적으로 모드를 설정할 수 있습니다. 예시:
$this->ftp->download('/public_html/myfile.html', '/local/path/to/myfile.html', 'ascii');
‘auto’ 모드를 사용하면 소스 파일의 확장자를 기반으로 모드가 결정됩니다.
다운로드가 성공적으로 실행되지 않으면 FALSE를 반환합니다 (PHP가 로컬 파일 쓰기 권한이 없는 경우 포함).
- rename($old_file, $new_file[, $move = FALSE])¶
- 매개변수:
$old_file (
string) – 기존 파일 이름$new_file (
string) – 새 파일 이름$move (
bool) – 이동 작업 수행 여부
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
파일 이름을 변경할 수 있습니다. 소스 파일 이름/경로와 새 파일 이름/경로를 제공합니다.
// green.html을 blue.html로 이름 변경 $this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');
- move($old_file, $new_file)¶
- 매개변수:
$old_file (
string) – 기존 파일 이름$new_file (
string) – 새 파일 이름
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
파일을 이동할 수 있습니다. 소스 경로와 대상 경로를 제공합니다:
// blog.html을 "joe"에서 "fred"로 이동 $this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');
참고
대상 파일 이름이 다르면 파일 이름이 변경됩니다.
- delete_file($filepath)¶
- 매개변수:
$filepath (
string) – 삭제할 파일 경로
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
파일을 삭제할 수 있습니다. 파일 이름을 포함한 소스 경로를 제공합니다.
$this->ftp->delete_file('/public_html/joe/blog.html');
- delete_dir($filepath)¶
- 매개변수:
$filepath (
string) – 삭제할 디렉터리 경로
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
디렉터리와 그 안의 모든 내용을 삭제할 수 있습니다. 끝에 슬래시를 포함한 디렉터리의 소스 경로를 제공합니다.
중요
이 메소드를 사용할 때는 매우 주의하세요! 제공된 경로 내의 하위 폴더와 모든 파일을 포함하여 모든 것을 재귀적으로 삭제합니다. 경로가 올바른지 반드시 확인하세요. 먼저
list_files()를 사용하여 경로가 올바른지 확인하세요.$this->ftp->delete_dir('/public_html/path/to/folder/');
- list_files([$path = '.'])¶
- 매개변수:
$path (
string) – 디렉터리 경로
- 반환:
파일 목록 배열 또는 실패 시 FALSE
- 반환 형식:
array
서버의 파일 목록을 배열로 가져올 수 있습니다. 원하는 디렉터리의 경로를 제공해야 합니다.
$list = $this->ftp->list_files('/public_html/'); print_r($list);
- mirror($locpath, $rempath)¶
- 매개변수:
$locpath (
string) – 로컬 경로$rempath (
string) – 원격 경로
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
로컬 폴더와 그 안의 모든 내용(하위 폴더 포함)을 재귀적으로 읽고 FTP를 통해 이를 기반으로 미러를 생성합니다. 원본 파일 경로의 디렉터리 구조가 서버에 그대로 재현됩니다. 소스 경로와 대상 경로를 제공해야 합니다:
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
- mkdir($path[, $permissions = NULL])¶
- 매개변수:
$path (
string) – 생성할 디렉터리 경로$permissions (
int) – 권한 (8진수)
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
서버에 디렉터리를 생성할 수 있습니다. 생성하려는 폴더 이름으로 끝나는 경로를 끝에 슬래시와 함께 제공합니다.
두 번째 매개변수에 8진수 값을 전달하여 권한을 설정할 수 있습니다.
// "bar"라는 폴더 생성 $this->ftp->mkdir('/public_html/foo/bar/', 0755);
- chmod($path, $perm)¶
- 매개변수:
$path (
string) – 권한을 변경할 경로$perm (
int) – 권한 (8진수)
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
파일 권한을 설정할 수 있습니다. 권한을 변경하려는 파일 또는 디렉터리의 경로를 제공합니다:
// "bar"를 755로 chmod $this->ftp->chmod('/public_html/foo/bar/', 0755);
- changedir($path[, $suppress_debug = FALSE])¶
- 매개변수:
$path (
string) – 디렉터리 경로$suppress_debug (
bool) – 이 명령에 대한 디버그 메시지 비활성화 여부
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
현재 작업 디렉터리를 지정된 경로로 변경합니다.
$suppress_debug매개변수는 이 메소드를 FTP의is_dir()대안으로 사용하려는 경우에 유용합니다.
- close()¶
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
서버와의 연결을 닫습니다. 업로드가 완료되면 이 메소드를 사용하는 것을 권장합니다.