CodeIgniter User Guide Version 1.7.2


FTP 클래스

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

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

클래스 초기화 Initializing the Class

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

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

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

사용예제 Usage Examples

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

$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();

함수 레퍼런스 Function Reference

$this->ftp->connect()

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 배열을 그 파일안에 추가합니다. 그 다음에 config/ftp.php 로 저장하면 자동으로 설정을 읽어오게 됩니다.

사용가능한 연결 옵션:

$this->ftp->upload()

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

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

모드옵션은 :  ascii, binary, 그리고 auto (기본값). 만약 auto 로 설정되어있다면 업로드할 파일의 확장자를 기준으로 모드를 설정합니다.

퍼미션 설정은 PHP 5 에서 가능하고 8진수를 이용하여 4번째 파라미터로 설정하면 됩니다.

$this->ftp->rename()

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

// Renames green.html to blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');

$this->ftp->move()

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

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

참고: 만약 목적지 경로에서 넘겨지는 파일이름이 소스와 다르다면 파일명 변경도 같이 이루어 집니다.

$this->ftp->delete_file()

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

$this->ftp->delete_file('/public_html/joe/blog.html');

$this->ftp->delete_dir()

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

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

$this->ftp->delete_dir('/public_html/path/to/folder/');

$this->ftp->list_files()

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

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

print_r($list);

$this->ftp->mirror()

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

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

$this->ftp->mkdir()

서버에 디렉토리를 생성합니다 . 생성하고자하는 폴더의 경로를 넘겨줍니다. 이때 마지막에 / 를 붙여줍니다.퍼미션은 8진수를 사용할수도 있으며 두번째 파라미터로 넘겨줍니다(PHP 5에서 됩니다).

// Creates a folder named "bar"
$this->ftp->mkdir('/public_html/foo/bar/', DIR_WRITE_MODE);

$this->ftp->chmod()

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

// Chmod "bar" to 777
$this->ftp->chmod('/public_html/foo/bar/', DIR_WRITE_MODE);

$this->ftp->close();

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