PHP에는 자체 FTP 함수가 있습니다. 여기서는 FTP 함수를 이용하지 않고 오직 CURL 만을 이용해 FTP 를 관리해 보겠습니다.
CURL에는 많은 기능이 있습니다. 자주 사용하는 몇 가지를 소개합니다.
1. 파일을 업로드하는 방법
<?php
$realserver = 'ftp://habonyphp.com/public_html/data/';
$user = 'habony';
$pass = '123456';
$realfile = $_FILES['uerfile']['tmp_name'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, @fopen($realfile, 'r'));
curl_setopt($ch, CURLOPT_INFILESIZE, @filesize($realfile));
curl_setopt($ch, CURLOPT_URL, $realserver);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_exec($ch);
curl_close($ch);
?>
2. 파일을 다운로드 방법
<?php
$realserver = 'ftp://habonyphp.com/public_html/data/';
$user = 'habony';
$pass = '123456';
$realfile = 'example.gif';
$remote = tempnam(sys_get_temp_dir(), 'CURL_FTP');
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_FILE, $fp = @fopen($remote, 'w+'));
curl_setopt($ch, CURLOPT_URL, $realserver . $realfile);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_exec($ch);
curl_close($ch);
fclose($fp);
$url = $remote;
?>
3. 파일을 삭제하는 방법
<?php
$realserver = 'ftp://habonyphp.com/public_html/data/';
$user = 'habony';
$pass = '123456';
$list = array(
'DELE habony.gif', 'DELE namefile.bmp', 'DELE example.jpg'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTQUOTE, $list);
curl_setopt($ch, CURLOPT_URL, $realserver);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_exec($ch);
curl_close($ch);
?>
4. 파일의 이름을 변경
<?php
$realserver = 'ftp://habonyphp.com/public_html/data/';
$user = 'habony';
$pass = '123456';
$old = 'old.bmp';
$new = 'new.bmp';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTQUOTE, array("RNFR " . $old, "RNTO " . $new);
curl_setopt($ch, CURLOPT_URL, $realserver);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_exec($ch);
curl_close($ch);
?>
5. 폴더를 삭제하는 방법
<?php
$realserver = 'ftp://habonyphp.com/public_html/data/';
$user = 'habony';
$pass = '123456';
$rmdir = 'dirname';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTQUOTE, array("RMD " . $rmdir);
curl_setopt($ch, CURLOPT_URL, $realserver);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_exec($ch);
curl_close($ch);
?>
6. 폴더를 만드는 방법
<?php
$realserver = 'ftp://habonyphp.com/public_html/data/';
$user = 'habony';
$pass = '123456';
$mkdir = 'dirname';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTQUOTE, array("MKD " . $mkdir);
curl_setopt($ch, CURLOPT_URL, $realserver);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_exec($ch);
curl_close($ch);
?>
7. 권한을 설정하는 방법
<?php
$realserver = 'ftp://habonyphp.com/public_html/data/';
$user = 'habony';
$pass = '123456';
$fname = 'data';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTQUOTE, array("SITE CHMOD 0707 " . $fname);
curl_setopt($ch, CURLOPT_URL, $realserver);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_exec($ch);
curl_close($ch);
?>
8. 파일 목록을 출력하는 방법
<?php
$realserver = 'ftp://habonyphp.com/public_html/data/';
$user = 'habony';
$pass = '123456';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $realserver);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
$list = curl_exec($ch);
curl_close($ch);
print_r($list);
?>