bool ftp_site ( resource $ftp_stream , string $command ) (PHP 4, PHP 5)

이 함수는 주로 파일권한 변경에 사용됩니다.

예쩨(ex #1
 <?php 
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.
 // public_html/userid 에 자료를 저장한다면,
 // ftp 경로는 "public_html/userid/파일" 이 됩니다. 


 
// 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
);  

 

 // 서버의 파일(또는 폴더)의 퍼미션을 변경합니다.
 if (ftp_site($conn_id'CHMOD 0600 /home/user/privatefile')) {
   echo 
"정상적으로 처리되었습니다.\n";
 } else {
   die('처리에 문제가 발생되었습니다.');
 }

 
ftp_close($conn_id
); 
 
fclose($fp
); 
 
?>
블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag ftp

댓글을 달아 주세요

net2ftp.com에서 배포하는 php용 ftp 스크립트입니다. 언어지원과 압축파일, 원격 전송 등 다양한 기능을 제공합니다. 단 윈도우 환경일 경우 일부 기능이 동작하지 않을 수 있고, 윈도우에 접속하기 위해서는 방화벽때문에 접속 제한이 될 수 있어 "Passive mode"로 접속하여야 합니다.



블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

스마트폰 FTP 서버구축

스마트폰으로 ftp서버를 구축하는건 그다지 어렵지 않지만 운영하기에 좀 부족한 점이 없지않나 싶습니다. 일단 빠른 와이파이를 사용하더라도 스마트폰으로 구동하기에 자체가 느려서 어려운 점이 많지만 경험삼아 해보는 것도 좋을 것이라 생각됩니다.

구축하기에 앞서 다음 애플리케이션(앱마켓에서 검색->원격 웹 데스크톱, 또는 web desktop 을 찾습니다)을 다운받아 단계적으로 설치, 설정하여야 합니다. 이 기능으로 원격으로 스마트폰에 접속관리도 하고, 다른 스마트폰이나 실제 웹서버에 접속도 가능하게 하는 많은 역할을 합니다. 물론 사내 스마트폰 서버관리도 가능하여 문서나 서식정도로 공유하면 됩니다.


설치완료되면, "Web desktop"을 구동하여, "FTP Server"를 선택합니다.

 


"user name"은 변경할 수 없는 기본 "Admin"이어서, 패스워드와 포트만 변경할 수 있음을 알 수 있습니다. 임의의 패스워드를 입력하는데, 저는 123456으로 저장하고자 합니다.

접속포트는 기본 2221 로 설정되어 있지만 굳이 바꾸지 않아도 됩니다. 그림 하단에 보면, 인터넷 브라우저로 접속가능한 주소, ftp://192.168.123.100:2221 로 접속할 수 있음을 말하고 있는데, 이는 무선공유기로 FTP서버를 구축하고 있기 때문입니다. 공유기 ip가 기본 192 로 시작을 합니다.
 
이제 "Start Server"를 클릭하여 서버를 구동시킵니다.

인터넷 브라우저로 접속여부를 확인해 보겠습니다. 인터넷 브라우저를 띄워 주소창에 ftp://192.168.123.100:2221 로 접속해 보면 다음과 같은 화면이 나옵니다.


사용자 이름은 기본 "admin" 이므로 "admin"을 입력하고, 패스워드를 123456 으로 입력합니다. 기본 경로는 /sdcard 입니다.


꼭 브라우저로 접속하지 않더라도 알ftp나 파일질라와 같은 프로그램으로 접속해도 관리는 가능합니다. 이 방법은 사내에서만 운영되지만 외부(공인)ip로 공유하고자 한다면 다음 링크를 참고하여 구축해주면 됩니다. 그럼으로서 관리는 어디서든 가능하게 되는 것입니다.

링크: 2011/05/26 - 알ftp로 ftp서버 구축하기 #2
        2011/06/01 - 공유기 DMZ 설정방법
        2011/06/02 - HTTP 웹서버 운영시 공유기 설정방법

스마트폰 원격관리

이제 스마트폰을 원격으로 관리해 보겠습니다. 이는 자신의 스마트폰에 접속해서 파일이나, 이미지, 동영상, sns 등 원격관리가 가능합니다. 다시 "Web desktop"을 구동해서 웹 데스크탑을 선택합니다.


패스워드항목에 원하는 패스워드를 입력합니다. 저는 패스워드 123456으로 설정했습니다. 그리고 접속포트는 기본 8999인데, 굳이 바꿔줄 필요는 없습니다. 설정을 마쳤으면, "Start Server"를 클릭해서 서버를 구동해 줍니다.

그림 하단을 보면, 원격 접속관리 주소가 http://192.168.123.100:8999 로 나오므로, 인터넷 브라우저 주소창에 http://192.168.123.100:8999 로 접속합니다.

 


패스워드는 123456 으로 설정했기 때문에, 패스워드 123456을 입력하고 로그인을 해봅니다.


로그인이 되면, 원격으로 할 수 있는 프로그램들, ftp서버, 무선 키보드관리, 웹캠 등 다양한 기능을 할 수 있습니다. 먼저, 파일 익스플로러를 선택해 봅니다.


이 그림은 스마트폰에 실제하는 파일들이며, 파일이동, 복사가 가능합니다. 다음 그림은 sns 프로그램입니다.


스마트폰 바탕화면 그림을 바꿔 보겟습니다. "wallpaper"를 실행해서 "푸른 언덕.jpg"그림을 업로드해 봅니다.


웹 FTP서버 접속

스마트폰으로 원격으로 웹서버 파일관리를 위해 애플리케이션, andftp 를 설치해 줍니다.
 


웹서버관리를 위해 추가, 설정을 해줄 필요가 있으므로 "추가"버튼을 선택합니다. 기본경로는 스마트폰 로컬영역이고, 지정경로는 접속하고자 하는 서버가 대상이 됩니다.


서버 접속 정보에 대해 간단히 작성하여 줍니다. 만약, 이전에 구축한 스마트폰 서버에 접속하고자 한다면, 다음 그림과 같은 설정이 됩니다.


다음 그림은 언어 설정입니다.


모든 설정을 마쳤으면, 다음 그림의 "연결"을 클릭해서 접속여부를 확인해 줍니다.

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

다음은 파일이름을 변경하는 예제이며, 원격을 지원합니다.

 <?php 
 
// ftp는 상대경로, 절대경로가 허용되지 않으며, 
 // 보통 public_html, www, html 로 시작합니다. 

 // 호스트 정보 
 
$ftp_server "호스트 혹은 ip주소"
;  
 
$ftp_user_name "접속 아이디"
;  
 
$ftp_user_pass "접속 패스워드"
;  

 
// 호스트 접속 
 
$conn_id ftp_connect($ftp_server
);  

 
// 호스트 로그인  
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
);  

 
$old_file 'somefile.txt.bak'

 
$new_file 'somefile.txt'

 if (
ftp_rename($conn_id$old_file$new_file
)) {  
  echo 
"successfully renamed $old_file to $new_file\n"

 } else {  
  echo 
"There was a problem while renaming $old_file to $new_file\n"

 } 


 
ftp_close($conn_id
); 
 
?>

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

ftp기능은 파일관련 함수와 비슷하지만 큰 차이가 있는데, 사용에 제한이 없다는 점입니다. 주의점은 어떤 작업요청시 항상 로그인정보 작성이 필요하다는 점입니다.

예제(ex #1

  <?php
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.

 // 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
); 


 
// 퍼미션 변경할 파일
 
$file 'public_html/test.php'
;

 
// 해당파일을 0644로 변경합니다.
 
if (ftp_chmod($conn_id0644$file) !== false
) {
      echo 
"$file chmoded successfully to 644\n"
;
 } else {
      echo 
"could not chmod $file\n"
;
 }

 
ftp_close($conn_id
);
 
?> 


다음 함수로 변경이 가능하나 보안상 자주 사용되는 것을 권하지 않습니다.

예제(ex #2

  <?php
 
// 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
); 

 
// 퍼미션 변경할 파일
 
$file 'public_html/test.php'
;

 if (
ftp_site($conn_id'CHMOD 0600 ' $file
)) {
   echo 
"Command executed successfully.\n"
;
 } else {
   die(
'Command failed.'
);
 }
 
?>


예제(ex #3

  <?php
 
// 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
); 

 
// 퍼미션 변경할 파일
 
$file 'public_html/test.php'
;

 
$command 'chmod 0600 ' $file
;
 if (
ftp_exec($conn_id$command
)) {
    echo 
"$command executed successfully\n"
;
 } else {
    echo 
"could not execute $command\n"
;
 }

 
ftp_close($conn_id
);
 
?> 

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

이 기능은 업,다운로드 중 다른 작업을 가능하게 해주는 진보된 기능입니다. 사용 방법은 이전 함수와 크게 다르지 않으니 어렵지 않습니다.

다음은 B 호스트에서 로컬로 다운로드합니다.

예재(ex #1

  <?php 
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.
 // public_html/userid 에서 자료를 가져 온다면,
 // ftp 경로는 "public_html/userid/파일" 이 됩니다.

 // B 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// B 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// B 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
); 

 
// 원격으로 B 호스트에서 다운로드합니다.
 // 로컬에 저장할 파일명, 필요시 경로도 같이 작성해 줍니다. 
 
$file 'test_body.php'

 
$fp fopen($file'w'
); 

 
// 원격으로 public_html/userid/test.php 파일을 가져옵니다.
 
$ret ftp_nb_fget($conn_id$fp'public_html/userid/test.php'FTP_BINARY
); 
 
$i 1
;
 while (
$ret == FTP_MOREDATA
) { 

   
// 다운로드중 다른 작업을 작성합니다.
   
echo "${i} \n"
;
   
$i
++;
   
$ret ftp_nb_continue($conn_id
); 
 } 
 if (
$ret != FTP_FINISHED
) { 
      echo 
"다운로드 중 에러가 발생하였습니다."

      exit(
1
); 
 } 
 

 
ftp_close($conn_id
); 
 
fclose($fp
); 
 
?>


다음은 로컬파일을 B 호스트로 업로드합니다.

예제(ex #2

  <?php 
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.
 // public_html/userid 에 자료를 저장한다면,
 // ftp 경로는 "public_html/userid/파일" 이 됩니다.

 // B 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// B 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// B 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
); 

 
// 원격으로 전송할 파일
 // 필요시 사용자 업로드 파일을 B 호스트로 전송시
 // $_FILES['userfile']['tmp_name'] 으로 작성하면 됩니다.
 
$file 'test.php'

 
$fp fopen($file'r'
); 

 
// 원격으로 public_html/userid/test.php 파일 이름으로 저장합니다.
 
$ret ftp_nb_fput($conn_id'public_html/userid/test.php'$fpFTP_BINARY
); 
 
$i 1
;
 while (
$ret == FTP_MOREDATA
) { 

   
// 업로드중 다른 작업을 작성합니다.
   
echo "${i} \n"
;
   
$i
++;
   
$ret ftp_nb_continue($conn_id
); 
 } 
 if (
$ret != FTP_FINISHED
) { 
      echo 
"업로드중 에러가 발생하였습니다."

      exit(
1
); 
 } 

 
ftp_close($conn_id
); 
 
fclose($fp
); 
 
?>


다음은 원격 업로드 이어전송하기 및 프로그레스 입니다.

예제(ex #3

  <?php
 ob_end_flush
();
 
$remote_file 'remote.txt'
;
 
$local_file 'local.txt'
;

 
$fp fopen($local_file'r'
);

 
$conn_id ftp_connect($ftp_server
);
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
);

 
$ret ftp_nb_fput($conn_id$remote_file$fpFTP_BINARY
);
 while (
$ret == FTP_MOREDATA
) {
     
// 업로드 중 리소스 소멸시 재연결합니다.
     
if(!isset($conn_id2
)) {
         
$conn_id2 ftp_connect($ftp_server
);
         
$login_result2 ftp_login($conn_id2$ftp_user_name$ftp_user_pass
);
      }
        
      
// 전송된 파일 크기를 측정합니다.
      
if(isset($conn_id2
)) {
          
clearstatcache
();
          
$remote_file_size ftp_size($conn_id2$remote_file
);
      }

      
// 프로그레스
      
$local_file_size  filesize($local_file
);
      if (isset(
$remote_file_size) && $remote_file_size 
){
          
$i = ($remote_file_size/$local_file_size)*100
;
          
printf("%d%% uploaded<br />\n"$i
);
          
flush
();
      }  
       
$ret ftp_nb_continue($conn_id
);
 }

 if (
$ret != FTP_FINISHED
) {
     print(
"There was an error uploading the file...<br />\n"
);
     exit(
1
);
 }
 else {
     print(
"ok!<br />\n"
);
 }

 
ftp_close($conn_id
); 

 
fclose($fp
);
 
?> 

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

php ftp에는 다양한 기능을 제공합니다. 그중 서버로 전송된 데이터를 다른 서버, 혹은 호스팅을 사용중이라도 ftp기능을 지원한다면, 두 서버간에 데이터 공유가 가능합니다. 다시 말해 웹사이트는 A 호스트로 운영을 하고, 데이터(파일 서버)는 B 호스트에 보관하는데, 사용자 요청시만 A 호스트로 업로드하거나 다운로드합니다.

가능하다면 골드회원은 C 호스트 파일다운로드권한을 주고, 실버회원은 B 호스트 파일다운로드권한 부여를 해서 파일 관리도 가능할 지도 모릅니다.

다음은 사용자가 업로드한 파일을 B 호스트로 원격 업로드합니다.

예재(ex #1

 <?php 
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.
 // public_html/userid 에 자료를 저장한다면,
 // ftp 경로는 "public_html/userid/파일" 이 됩니다.

 // 디비에 저장될 파일 이름 
 
$filename $_FILES['userfile']['name'
];
 
// B 호스트에 저장될 실제 파일
 
$tmpfile md5("habony_" $_FILES['userfile']['tmp_name'
]); 
 
$fp fopen($tmpfile'r'
); 

 
// B 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// B 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// B 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
); 

 
// 업로드 파일을 원격으로 B 호스트로 이동
 // B 호스트에 저장되면 DB 에 파일정보를 업데이트해줌
 // ftp_put 은 로컬에서만 가능하므로 ftp_fput을 사용합니다.
 
if (ftp_fput($conn_id$tmpfile$fpFTP_BINARY
)) { 
    echo 
"Successfully uploaded $filename\n"
;
 } else { 
    echo 
"There was a problem while uploading $file\n"

 } 

 
ftp_close($conn_id
); 
 
fclose($fp
); 
 
?>


필요시 업로드한 파일을 A 호스트로 가져 오는데, 이는 사용자가 파일 다운로드요청이나 이미지출력요청을 하였을 때만 처리되는 부분입니다.

예제(ex #2

 <?php 
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.
 // public_html/userid 에 자료를 저장한다면,
 // ftp 경로는 "public_html/userid/파일" 이 됩니다.

 // B 호스트에서 가져올 실제 파일
 
$remote_file "가져올 파일"
;
 
// A 호스트로 저장하거나 브라우저로 출력해야 할 파일
 
$local_file "저장할 파일"
;

 
// 임시 파일을 엽니다.
 
$fp fopen($local_file'w+'
);

  
// B 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// B 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// B 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
);

 
// 파일을 A 호스트로 업로드하고, 
 // $file 로 다운로드하거나 저장할 코드를 작성하면 됩니다.
 // ftp_get 은 로컬에서만 가능하므로 ftp_fget을 사용합니다.
 
if (ftp_fget($conn_id$fp$remote_fileFTP_BINARY0
)) { 
    while(!
feof($fp
)){ 
         
$file .= fread($fp1024
); 
    }
    
// 파일 다운로드나 파일 출력 처리 부분입니다.
    
echo "Successfully written to $local_file\n"

 } else { 
    echo 
"There was a problem while downloading $remote_file 
            to $local_file\n"

 } 

 
ftp_close($conn_id
); 
 
fclose($fp
); 
 
?> 


사용자가 자료 삭제 요청하였을 때, B 호스트 파일 삭제 처리 부분입니다.

예제(ex #3

<?php
 
// ftp는 상대경로, 절대경로가 허용되지 않으며,
 // 보통 public_html, www, html 로 시작합니다.
 // public_html/userid 에 자료를 저장한다면,
 // ftp 경로는 "public_html/userid/파일" 이 됩니다.
 
$file 'public_html/test.php'
;

   
// B 호스트 정보
 
$ftp_server "호스트 혹은 ip주소"

 
$ftp_user_name "접속 아이디"

 
$ftp_user_pass "접속 패스워드"


 
// B 호스트 접속
 
$conn_id ftp_connect($ftp_server
); 

 
// B 호스트 로그인 
 
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass
);

 
// B 호스트 파일 삭제
 // 파일 삭제가 정상적이면 DB 에 저장된 데이터도
 // 삭제 되도록 코드를 작성하면 됩니다.
 
if (ftp_delete($conn_id$file
)) {
      echo 
"$file deleted successful\n"
;
 } else {
      echo 
"could not delete $file\n"
;
 }

 
ftp_close($conn_id
);
 
?> 


이러한 기능은 서버일 경우 문제되지 않으나 호스팅을 받는 입장이라면 제한이 될 수 있습니다. 그래서 다음 코드로 ftp 지원여부 확인이 가능합니다.

 <?php
 
if(!function_exists('ftp_login'
)){
      echo 
"ftp 지원이 안됩니다."
;
 }
 
?>

 

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

  • rootman 2019.04.05 21:36  댓글주소  수정/삭제  댓글쓰기

    글 읽고서 궁금한게 있어서 남깁니다.
    CI 프레임워크 사용중이고 php입니다.
    저 소스 적용하는 곳이 정확히 어느 곳인지 알 수 있을까요?

    • Favicon of https://blog.habonyphp.com BlogIcon 하보니 2019.04.08 11:42 신고  댓글주소  수정/삭제

      CodeIgniter 를 말씀하시는 것 같은데, 죄송하지만 CodeIgniter 는 잘 모릅니다.
      다만...
      일반적인 방법으로 설명드리자면...
      위 소스가 proc.php 로 저장되어 있다면...

      <form enctype="multipart/form-data" action="proc.php" method="post">
      <input type="file" name="userfile">
      <input type="submit" value="전송">
      </form>

      정도가 되지 않을까 싶습니다.

FTP서버관리를 하다보면 보통 알FTP나 파일질라와 같은 프로그램으로 접속해서 관리하게 됩니다. 그런데, 만약에 도스창으로만 접속가능한 환경이고, FTP프로그램도 설치하지 못하는 환경이라면..? 어떻게 하지..? 라는 설정에서 설명하고자 합니다.

윈도우는 기본적으로 도스에 접속할 수 있는 내장FTP기능을 제공합니다. FTP에 접속하기 위해 명령프롬프트를 실행해야 하므로 윈도우XP기준 [시작->실행->cmd]로 명령을 내립니다.

도스창에서 [ftp]라고 입력합니다.


호스트 접속은 [ftp> open 호스트]를 입력합니다. open명령으로 지정 호스트를 열고자 합니다. 호스트는 도메인이거나 ip주소가 될 수 있습니다. 저는 ftp.microsoft.com 에 접속해 보겠습니다.


이 화면은 아이디와 패스워드를 입력하라는 것입니다. ftp.microsoft.com 는 익명연결이므로 아이디만  anonymous를 입력하고, 패스워드는 아무거나 넣고 엔터를 칩니다.


이제 로그인이 되었다고 나오네요. 이제 [dir]명령을 해보겠습니다.


알ftp 프로그램을 이용하면 마우스 몇 번의 클릭만으로 우리가 원하는 작업을 쉽게 수행할 수 있습니다만, 어쩔 수 없는 환경에 도스 작업을 해야하는 경우라면 약간의 기능 정도는 익혀 둘 필요가 있습니다. [help]명령을 하면 내장 ftp에서 작업할 수 있는 명령어를 알 수 있습니다.


ftp.microsoft.com 는 읽기만 허용될 뿐, 폴더나 파일생성, 수정, 삭제가 안되는 점, 알고 계시죠??

[/deskapps]폴더로 이동해 보겠습니다. [ftp> cd deskapps]을 하고, [pwd]명령을  내립니다. [pwd]는 현재 경로를 보여줍니다.


[dir]명령을 해서 파일 목록을 보면, [readme.txt]파일이 보이시죠? 이 파일을 받아 보겠습니다.
[ftp> get readme.txt]를 하면 다운로드됩니다. 파일은 경로 [c:\]에서 ftp접속하여 다운로드 받으면 [c:\]에 저장됩니다.


 [다운로드]
 ftp> get 파일경로
 [여러 개의 파일을 받을 때 사용]
 ftp> mget 파일경로 [..파일경로]

 [업로드]
 ftp> put 파일경로
 [여러 개의 파일을 업로드 할때 사용]
 ftp> mput 파일경로 [..파일경로]

 [binary #모드 전환]
 ftp> binary
 [binary 파일 다운로드 예제]
 ftp> binary
 ftp> get 파일경로

 [ascii #모드전환]
 ftp> ascii
 [ascii 파일 다운로드 예제]
 ftp> ascii
 ftp> get 파일경로

 [현재 경로]
 ftp> pwd

 [경로 이동]
 ftp> cd 이동경로

 [호스트 종료]
 ftp:> close

 [ftp 종료]
 ftp> quit
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

앞서 알ftp로 ftp서버 구축을 해보았는데요. 이제 파일질라 서버를 구축해 보고자 합니다. 파일질라는 외국제품이어서 설치, 운영이 쉽진 않겠지만, 다른 제품보다 편의성이나 기능면, 안정성에서 월등하기 때문에 아무래도 파일질라서버 사용자층이 많을 수 밖에 없습니다.




위 두 파일을 다운받아를 실행해 주세요. 별 다른 설정이 없으므로 다음 그림이 나올때 까지 계속 "다음"버튼을 클릭해 주시면 됩니다.


124.0.0.1은 "내 컴퓨터"의 ip주소이며, 14147은 관리자 접속 전용 포트로서 이는 사용자 포트와 별개로 동작됩니다. 처음 실행시 패스워드는 빈 값이므로 공란으로 두세요.

"Always connect to this server"는 프로그램실행시 자동 실행하겠느냐 라고 묻는데, 우리는 자동 실행되게 해야 하므로 체크를 해둡니다.

이제 로그인을 해 봅니다.

 


아무 문제없이 로그인이 된다면 "Logged on"메시지가 나타나겠지만, 만약 로그인이 되지 않으면, 다음 단계로 넘어 갈 수 없습니다. 왜냐하면 로그인 성공시만 메뉴가 활성화되기 때문입니다.


정상적으로 설치되었으니. "Disconnect"로 종료를 합니다.


파일을 압축해제하여 다음 그림 경로에 덮어 씌워 줍니다. 


FileZilla Server Interface를 다시 실행해서 "메뉴->편집->설정"을 선택합니다.


"사용할 포트"는 실제 운영시 사용자 접속 포트입니다. 통신사에서 간혹 21번 포트를 막아 두는 곳이 있어서 8080포트로 변경해 주고 확인을 누릅니다.


다음은 "관리자인터페이스 설정"을 선택해서 관리자용 비밀번호를 넣어 줍니다. 이는 관리자 전용 비밀번호여야 합니다.


위 그림과 같이 ip 주소 "124.58.205.17"를 넣었는데, 이렇게 입력해 두면 이 ip주소를 갖는 컴퓨터에서만 관리자모드로 접속할 수 있게 됩니다. 다시 말해 컴퓨터의 ip가 127.58.205.17 이 아니면 관리자모드에 접속할 수 없습니다.("내 컴퓨터" 공인ip 주소 확인은 www.ip-adress.com 에서 확인합니다.)

서버가 설치된 컴퓨터 ip는 124.58.205.17이므로 관리자모드 접속시 ftp://124.58.205.17:14147 이 되고, 사용자 접속시는 ftp://124.58.205.17:8080로 접속해야 합니다.

이제 사용자 편의를 위해 그룹을 만들겠습니다. 메뉴->편집->그룹으로 들어가서 오른쪽 버튼 "추가"를 누릅니다.


저는 그룹 이름을 동호회로 하고 저장하였습니다.

다음 그림처럼 오른쪽 메뉴에 그룹 동호회가 만들어 졌는데, 이로서 그룹에 포함하는 유저는 파일 읽기, 삭제, 업로드 등 설정의 영향을 받게 됩니다.


이제 그룹의 디렉토리, 파일접근권한을 설정해 보겠습니다. 왼쪽 "메뉴->Shared folders"를 선택하여, 추가를 선택합니다. 이는 ftp서버로 할 폴더를 지정하는 것입니다.

저는 경로 D:\backup\public_html 폴더를 홈 디렉토리로 정의 하였습니다. 이름 앞에 H가 붙은 건 홈디렉토리임을 알려 줍니다.


그리고 이 폴더그룹은 서브폴더는 만들 수 없지만 자유롭게 폴더를 만들거나 파일을 삭제, 업로드, 다운로드 권한을 주었습니다.

이제 유저 아이디를 만들겠습니다. 메뉴->편집->사용자를 클릭하여, 오른쪽 메뉴인 추가를 클릭합니다.


유저 아이디 aaaaa로 하고 그룹을 동호회를 선택하고, 비밀번호 11111로 하였습니다.


이제 인터넷 주소창에 서버주소인 ftp://124.58.205.17:8080로 접속을 하여 앞서 만들어 놓은 아이디, 패스워드를 aaaaa, 11111를 넣어 로그인을 해봅니다.

이제 자료실 그룹을 만들어 보겠습니다. 메뉴->편집->그룹을 선택, 오른쪽 메뉴인 추가를 선택합니다. 그룹이름을 지어 줍니다. 저는 그룹이름을 자료실로 하였습니다.


그룹은 이제 동호회와 자료실, 2개가 되었습니다.


자료실 그룹의 디렉토리, 파일접근권한을 설정하겠습니다. 왼쪽 "메뉴->Shared folders"를 선택하여, 추가를 선택합니다. 이는 ftp서버로 할 폴더를 지정하는 것입니다.

저는 경로 D:\Users 폴더를 홈 디렉토리로 정의 하였습니다.


자료실 폴더그룹은 파일 다운로드 권한과 폴더 생성 권한만을 주었습니다. 자료실이란 특성으로 단지 다운로드권한만 준 것입니다.

이제 유저 아이디를 만들겠습니다. 메뉴->편집->사용자를 클릭하여, 오른쪽 메뉴인 추가를 클릭합니다.


유저 아이디 misnam으로 하고 그룹을 자료실를 선택하였습니다.


문제는 아이디만 만들었을 뿐 비밀번호는 설정하지 않았습니다.

이제 인터넷 주소창에 서버주소인 ftp://124.58.205.17:8080로 접속을 하여 앞서 만들어 놓은 아이디 misnam을 입력하여 로그인을 해봅니다.

이와 같이 모든 설정을 하였지만 보안 문제로 접속에 사용에 제한을 받는 경우가 있어서 방화벽을 해제할 필요가 있습니다. 윈도우 "시작->제어판->Windows방화벽->사용안함"으로 해주세요.

블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag ftp, FTP구축

댓글을 달아 주세요

ftp서버를 [2011/05/25 - 알ftp로 ftp서버 구축하기] 링크를 통해 구축되었다면, 이제 외부 접속자가 사설 ip로 설정된 ftp서버에 접속하는 방법을 소개하겠습니다.

사실 컴퓨터 2대정도 사용한다면, 일반 허브나 스위치 허브를 사용해도 큰 문제는 되지 않습니다. 보통 통신사는 일반적으로 공인 ip 2개정도 풀어주는데, kt사용자라면 최대 5개까지 ip를 받을 수 있기 때문에 공인 ip로 사용할 수 있습니다. 

사설 ip는 보통 192.168.xxx.xxx, 10.xxx.xxx.xxx, 172.xxx.xxx.xxx 로 시작하는 ip로서 가상 ip로 설명합니다. 이는 외부에서는 사용할 수 없는 ip로 외부에서 ftp://192.168.0.2로 접속하면 접속이 되지 않는데, 이는 공유기 내에서만 존재하는 ip이기 때문입니다.
 
공유기 설정문제로 공유기 어드민에 접속해야 하지만, 제품마다 접속경로가 다르므로,  윈도우xp기준으로 "시작->실행->cmd"로 명령프롬프트창을 띄워 "ipconfig/all"이라는 명령을 내리면, 다음 그림처럼 비슷한 정보를 보여주게 됩니다.

 


여기서 DHCP서버항목인 192.168.0.1 이 어드민 접속경로라 생각하면 됩니다. 저는 IPtime을 쓰는데, 이 제품의 어드민 경로가 보통 192.168.0.1 입니다. 참고로 이 컴퓨터가 할당받은 IP는 192.168.0.2입니다. 인터넷주소창에 http://192.168.0.1로 접속합니다.

 

 


여기서 동적 ip가 보이는데, 이는 저의 공인 ip입니다. 관리도구를 클릭하여 창을 띄우면 메뉴 탐색기가 나타납니다. "메뉴탐색기->고급설정->NAT/라우터 관리->포트포워드 설정"을 선택합니다. 포트포워드는 공유기제품마다 이름이 약간 다를 수 있는데, 보통 포트포워드, 또는 포트포워딩이라 합니다.

 

 


 정의된 리스트  FTP 선택
 내부 IP주소  이 컴퓨터의 IP가 192.168.0.2 이므로 끝에 2를 입력,
 프로토콜  TCP선택, TCP는 송수신을 담당하고, UDP는 송신만
 합니다. 보통 IPTV는 UDP방식입니다.
 외부포트  기본 21, 간혹 트래픽문제로 통신사에서 포트를 막아
 두는 곳이 있어서 저는 8080포트로 변경하였습니다.

여기까지 마무리 하였다면 추가버튼을 누릅니다. 추가가 되었다면, 반드시 설정저장을 해두어야 합니다. IPTime의 경우 상단에 저장버튼이 따로 있습니다.

알ftp는 ftp://192.168.0.2 인 ip 주소에 21 내부포트를 사용하고, 공유기는 외부포트 8080포트를 사용하도록 설정하였습니다. 저의 공인 ip가 124.58.205.17 이므로 인터넷 주소창에 ftp://124.58.205.17 로 접속해 봅니다.

접속이 안되죠??? ....   이렇게 접속하면 보통 기본 21포트로 접속하기 때문에 자동으로 8080포트로 접속하지 않습니다. 그래서 주소 끝에 :8080을 붙여 ftp://124.58.205.17:8080 으로 접속해야 합니다.

 


이렇게 해야 공인 ip를 거쳐 공유기인 사설 ftp서버로 연결시킬 수 있습니다.

이제 여러 개 폴더를 공유해 보겠습니다. "알ftp실행->서버실행->접근가능한 디렉토리"에서 추가를 누릅니다.

 

 

폴더 검색창에서 추가할 폴더를 선택해서 확인버튼을 선택합니다. 별명은 임의대로 입력해 주세요.
 

 


그림과 같이 D:\backup폴더를 추가해 주었습니다. 메인은 C:\Neowiz 폴더이지만, 서브 폴더는 D:\backup폴더입니다.

다시  ftp://124.58.205.17:8080 로 접속해서 로그인을 해봅니다.


 


최초에 피망 폴더만 있었지만, 서브폴더 작업으로 backup폴더가 만들어 졌습니다.

 


하지만 실제 폴더를 열어 보면 backup폴더가 없다는 것을 이해할 것입니다. 이 기능은 "바로가기'기능과 비유해도 됩니다.

여기까지 사설 ip 에 대해 이해했지만 아직 공인 ip주소를 잘 모르겠다 생각이 든다면 아래 주소지에서 확인해볼 수 있습니다. 이 사이트는 별다른 설정없이 단지 접속만으로 본인의 공인 ip주소를 보여줄 것입니다.

 


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

알 ftp는 서버전용이 아니라서 폭넓은 서비스를 하기에는 적합하지 않지만 그래도 조금은 쓸만하다 생각이 듭니다. 우선 최신 버전 알ftp를 다운받아 설치를 합니다. 정상적으로 프로그램을 설치하였다면 알ftp를 실행하여, 다음 그림과 같이 "서버->서버실행"으로 실행시킵니다.

 


그럼 서버설정 그림이 나옵니다.

 


서버로 사용할 ip주소가 현재 192.168.0.2로 되어 있습니다. 이는 사설 ip 이므로 공인 ip로 설정해야 외부에서 접속이 가능해 집니다. 만약 사내에서만 공유하고자 한다면, 사설 ip로 설정해주면 됩니다.

 홈디렉토리  서버로 사용할 디렉토리를 지정합니다.
 ID없이 접속허용  익명으로 접속, 이는 누구나 접속이 가능합니다.
 읽기만 허용  외부에서 파일을 수정하지 못하게 합니다.
 포트  21
 허용인원  동시 접속자 수
 아이디  익명접속이 아니라면 아이디, 비밀번호를 설정해야합니다.
 비밀번호  

서버로 사용할 디렉토리, 아이디, 비밀번호를 설정하였다면, "확인"을 누릅니다. 여기서 문제는 알ftp를 종료한다면 ftp서버도 중지된다는 점에 주의가 필요합니다. 24시간 운영하고자 한다면, 알ftp를 중지해서는 안됩니다.

이제 서버로 접속해 보겠습니다. 저의 경우는 C:\Neowiz폴더를 서버로 하여 192.168.0.2로 설정, 아이디, 비밀번호를 aaaaa, 11111로 지정하였습니다. 이제 인터넷 주소창에 ftp://192.168.0.2/로 접속하여 앞서 설정한 아이디, 비밀번호를 입력합니다.

 


그럼 다음과 같이 자유롭게 사용할 수 있게 되었습니다.

 


 
공유기 설정 -> 2011/05/26 - 알ftp로 ftp서버 구축하기 #2

블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag ftp, FTP구축

댓글을 달아 주세요

재수정일: 5월 25일 pm 7:22에 윈도우호환성문제로 파일이 재수정되었습니다.

이제 목록을 만들어 보도록 하겠습니다.

 

 


디렉토리함수에 대해 이해하고 있다면, FTP 제작은 그리 어렵지 않을 것이라 생각됩니다. 펑션 파일은 로그인처리시 사용된 동일한 소스입니다. 앞으로 자주 사용되므로 함수로 만들도록 합니다.

함수 만들기 -- func.php

 <?php
 
// php ftp 연결 
 
function ftp_conn
(){
      
$data 
= array();
      
$data['time'] = 90
;
      
$data['host'] = base64_decode($_SESSION['ftp_host'
]);
      
$data['id']   = base64_decode($_SESSION['ftp_id'
]);
      
$data['pass'] = base64_decode($_SESSION['ftp_pass'
]);
      
$data['port'] = base64_decode($_SESSION['ftp_port'
]);
      
$data['pasv'] = base64_decode($_SESSION['ftp_pasv'
]);
      
$data['ssl']  = base64_decode($_SESSION['ftp_ssl'
]);

      
$ftp_conn false
;
      if (
$data['ssl'] === "y"
) {
            if(
false === ($ftp_conn = @ftp_ssl_connect($data['host'],
$data['port'], $data['time'
]))){
                  exit(
"보안 접속이 정상적이지 않습니다."
);
            }
      } else if (
false === ($ftp_conn = @ftp_connect($data['host'],
$data['port'], $data['time'
]))) {
            exit(
" 접속이 정상적이지 않습니다."
);
      }

      
// FTP 로그인 테스트
      
$ftp_id false
;
      if(
false === ($ftp_id = @ftp_login($ftp_conn,$data['id'],
$data['pass'
]))) {
            exit(
"FTP 로그인에 실패하였습니다."
);
      }
      
// Passive 접속여부
      
if($data['pasv'
]){
            @
ftp_pasv($ftp_conntrue
);
      }

      if(
is_resource($ftp_conn
)){
            return array(
$ftp_conn$data['host'
]);
      } else {
            return 
null
;
      }
 }

 function 
attach($size
) {
      
$sizes = array(" B"" KB"" MB"" GB"" TB"" PB"
" EB"" ZB"" YB"
);
      if (
$size == 0) { return('n/a'
); } else {
      return (
round($size/pow(1024, ($i floor(log($size1024)))),
 
2) . $sizes[$i
]); }
 }
 
?> 


목록 만들기 -- list.php

 <?php
 $data 
= array();
 
$data = &$_GET
;
 unset(
$_GET
);

 
session_start
();
 include (
"func.php"
);

 if(
null === (list($ftp$host) = ftp_conn
())){
      exit(
"리소스 확보에 실패하였습니다."
);
 } else {
      
$local_server "접속호스트: " $host "<br />\n"
;
 }


 
// 루트 이동
 
if(!empty($data['dir'
])){
      
// 경로를 변경할 때 사용됩니다.
      // ftp_chdir($ftp 리소스, 변경할 경로)
      // 성공하면 true를, 실패하면 php오류를 표시하므로 @를 붙입니다.
      
if(false === @ftp_chdir($ftp,$data['dir'
])){
           exit(
"경로변경에 실패하였습니다."
);
      }
 }

 
// ftp_pwd($ftp 리소스)
 // 현제 경로를 반환합니다.
 // 성공하면 경로명을, 실패하면 false를 반환합니다.
 
$data['pwd'] = ftp_pwd($ftp
);
 
?>

<!DOCTYPE html>
<style>
 td { font-size:12pt; color: #666666 }
 a { font-size:12pt; color: #000000 }
</style>

<br />
<br />
<br />
<br />

<table>
 <tr>
  <td>
   <?php echo $local_server;
?>
</table>

<table>
 <tr>
  <td>
   <a href='list.php'>Home</a>&nbsp;
   
<?php
   
// 루트
   
$rtmp explode('/',$data['pwd'
]);
   
$rcount count($rtmp
);
   for(
$i=1$i<$rcount$i
++){
        if(
strlen($rtmp[$i]) > 1
){
             
$data['history'] .= "/".$rtmp[$i
];
             echo 
'> <a href=list.php?dir='.urlencode($data['history']).'>'.$rtmp[$i]."</a>&nbsp;"
;
        }
   }
   
?>
</table>

<table width="550">
 <tr height="1" bgcolor="#666666">
  <td colspan="5">
 <tr>
  <td>
   No
  <td>
   Name
  <td>
   Perms
  <td>
   Size
  <td>
   Time
 <tr height="1" bgcolor="#666666">
  <td colspan="5">
 
 
<?
 
// 배열 = ftp_rawlist($ftp 리소스, 경로)
 // 성공하면 아래 처럼 자세한 정보를 가져 옵니다. ftp특성상 원격지원이 가능합니다.
 // 물론 유닉스와 윈도우는 형식을 다르게 가져 옵니다.
 // 유닉스는 다음과 같이 정보를 가져 옵니다.
 // -rw-r--r-- 1 root root 1346 May 24 12:31 func.php
 // -rw-r--r-- 1 root root 1965 May 24 12:56 list.php 
 // 윈도우는 퍼미션이 없기 때문에 다음과 같은 정보를 가져 옵니다.
 // drwxrwxrwx 1 root root 0 May 08 13:43 Launcher
 // -rwxrwxrwx 1 root root 2388176 May 08 14:20 d3dx9_30.dll
 // 파일(또는 디렉토리)목록만 가져 오려면 ftp_nlist함수를 사용합니다.
 // 배열 = ftp_nlist($ftp 리소스, 경로);
 // func.php
 // list.php
 
$data['item'] = ftp_rawlist($ftp,$data['dir'
]);
 
$fcount count($data['item'
]);
 for(
$i=0$i<$fcount$i
++){

      
$item split("[ ]+",$data['item'][$i],9
);
      
// -rw-r--r-- 1 root root 1346 May 24 12:31 func.php
      // 공백으로 분할하였을 때...
      // $item[0] = -rw-r--r--; 퍼미션
      // $item[1] = 1;
      // $item[2] = root;
      // $item[3] = root;
      // $item[4] = 1346; 바이트
      // $item[5] = May;
      // $item[6] = 24;
      // $item[7] = 12:31;
      // $item[8] = func.php; 파일명

      // ftp용 유닉스 타임스탬프로 반환하는 ftp_mdtm함수
      // 이 함수는 윈도우에서는 동작하지 &#51066;습니다.
      // 그러므로 "$item[5]-$item[6]-$item[7]"로 조합해도 됩니다.
      // date("Y-m-d", ftp_mdtm($ftp리소스, 파일명))

 
if(($item[8] !== '.') && ($item[8] !== '..'
)) {

       
// $item[0] = -rw-r--r--; 퍼미션
       // 첫문자가 -이면 파일, d이면 폴더
       
$data['type']  = substr($item[0],0,1
);

       
$j $i+1
;

       
// 첫문자가 d,l 이면 폴더
       
if($data['type'] === 'd'
) {

  echo 
"
  <tr>
   <td>
    " 
$j 
"
   <td>
    <a href='list.php?dir=" 
$data['dir'] . "/" urlencode($item[8]) . "'>/" $item[8] . 
"</a>
   <td>
    " 
$item[0] . 
"
   <td>
    " 
attach($item[4]) . 
"
   <td>
  
  "
;
       }
       
// 파일 시작
       
if($data['type'] === '-'
) {
 
  echo 
"
  <TR>
   <TD>
    " 
$j 
"
   <TD>
    " 
$item[8] . 
"
   <TD>
    " 
$item[0] . 
"
   <TD>
    " 
attach($item[4]) . 
"
   <TD>
    " 
date("y-m-d H:i:s.",ftp_mdtm($ftp,$item[8])) . 

  "
;
       }
   }
 }

 
ftp_quit($ftp
);
 
?>

</table> 


블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag ftp

댓글을 달아 주세요

윈도우에서는 별다른 설정없이 바로 사용 가능하나, 유닉스계열에서는 --enable-ftp 설정옵션을 하여야 합니다. 일반적인 ftp기능을 php로 구현이 가능하며, 실제 운영시 정보공유나 파일 분산작업이 가능하여 많이 사용되는 기능입니다.

우선 로그인폼과 로그인처리를 만들어 보겠습니다.


로그인폼 제작 -- login.php
<!DOCTYPE html>
<style> td { font-size:12pt; color: #666666}</style>
<BR />
<BR />
<BR />
<BR />
<table>
<form action='login_ok.php' method='post'>
<input type='hidden' name='mode' value='login' />
 <tr>
  <td colSpan="2">&nbsp;하보니&nbsp;Log in ...
 <tr>
  <td colSpan="2">&nbsp;Connect to FTP Server
 <tr>
  <td>&nbsp;Server
  <td>
  <input type='text' name='inputhost' value='' />
 <tr>
  <td>&nbsp;User
  <td>
   <input type='text' name='inputid' />
 <tr>
  <td>
   &nbsp;Password
  <td>
   <input type='password' name='inputpass' />
 <tr>
  <td>&nbsp;Port
  <td>
   <input type='text' name='port' size='4' value='21' />
    &nbsp;<input type='checkbox' name='ssl' value='y' />SSL-ftp
    &nbsp;<input type='checkbox' name='pasv' value='y' />Passive Mode
 <tr>
  <td colSpan="2">
   <INPUT type="submit" value="Log on" />
</form>
</table> 

로그인 처리 제작 -- login_ok.php

 <?php
 
// ftp_login 함수가 있는지 체크합니다.
 // ftp 기능이 활성화되어 있지 않다면 오류를 표시합니다.
 
if(!function_exists('ftp_login'
)){
      exit(
"ftp 기능을 지원하지 않습니다."
);
 }

 
$data 
= array();
 
$data = &$_POST
;
 
$data['time'] = 90
// 서버 접속 시간, 기본 90초 
 
unset($_POST); 
// 변수의 변질을 막기위해 삭제를 합니다.


 // 아이디, 패스워드값이 비어 있으면 에러
 
if (empty($data['inputhost'
])) {
      exit(
"호스트가 비어 있습니다."
);
 }
 if (empty(
$data['inputid'
])) {
      exit(
"아이디가 비어 있습니다."
);
 }
 if (empty(
$data['inputpass'
])) {
      exit(
"패스워드가 비어 있습니다."
);
 }

 
// 접속 포트, 기본 21
 
if($data['port'] !== 21
){
      if(!
ereg("^[1-9][0-9]*$"$data['port'
])){
           exit(
"잘못된 포트입니다."
);
      }
 }

 
$ftp_conn false
;
 if (
$data['ssl'] === "y"
) {
      
// 보안접속시 실행
      // 리소스 = ftp_ssl_connect(접속 호스트, 접속포트, 서버 접속시간)
      
if(false === ($ftp_conn = @ftp_ssl_connect(
        $data
['inputhost'], $data['port'], $data['time'
]))){
           exit(
"보안 접속이 정상적이지 않습니다."
);
      }
 
// 일반 접속시 실행
 // 리소스 = ftp_connect(접속 호스트, 접속포트, 서버 접속시간)
 
} else if (false === ($ftp_conn = @ftp_connect(
          $data
['inputhost'], $data['port'], $data['time'
]))) {
      exit(
" 접속이 정상적이지 않습니다."
);
 }

 
// FTP 로그인 테스트
 
$ftp_login false
;
 
// ftp_login(리소스, 접속아이디, 접속패스워드)
 
if(false === ($ftp_login = @ftp_login(
   $ftp_conn
,$data['inputid'],$data['inputpass'
]))) {
      exit(
"FTP 로그인에 실패하였습니다."
);
 }


 
// 아이디, 패스워드 세션 생성
 
if($ftp_login === true
){
      
session_start
();

      
// 호스트, 아이디, 패스워드, 접속포트 저장
      
$_SESSION['ftp_host'] = base64_encode($data['inputhost'
]);
      
$_SESSION['ftp_id']   = base64_encode($data['inputid'
]);
      
$_SESSION['ftp_pass'] = base64_encode($data['inputpass'
]);
      
$_SESSION['ftp_port'] = base64_encode($data['port'
]);

      
// 보안 접속시 필요합니다.
      
$_SESSION['ftp_ssl'] = base64_encode($data['ssl'
]);
  
      
// bool ftp_pasv ( resource $ftp_stream , bool $pasv )
      // passive mode 접속시 필요합니다.
      
if($data['pasv'] === "y"
){
           
$_SESSION['ftp_pasv'] = base64_encode($data['pasv'
]);
      }
 }

 
// ftp 연결 종료
 
if(is_resource($ftp_conn
)){
      
ftp_close($ftp_conn
);
 }

 echo 
"<pre>"
;
 
print_r($_SESSION
);

 
?>

블로그 이미지

하보니

하보니와 함께하는 phP 초보

Tag ftp

댓글을 달아 주세요