요즘 나오는 제품들, USB 무선 랜카드는 무선 랜카드만 제공하기 보다는 필요시 무선 공유기로 대체할 기능을 제공합니다. 이는 iptime 제품이나 애니게이트 등 대표적 제품에서 기본 제공됩니다. 이 기능을 사용하면, 무선 공유기가 없어도 마치 무선 공유기로 연결한 것 처럼 노트북이나 스마트폰을 연결하여 이용할 수 있습니다.


문제는 무선 랜카드가 연결된 해당 컴퓨터가 계속적으로 켜져 있어야 하고, PC 설정 상태에 따라 동작이 올바르지 않을 수 있는데, 예를 들어 iptime 의 유선 공유기와 iptime 인 무선 랜카드를 연결 사용할 경우 ip가 동일할 가능성이 있어 ip 충돌로 무선이 원활히 동작하지 않는 문제 등을 안아야 합니다.

먼저, 이 기능을 사용하기 위해 해당 홈폐이지에서 무선 랜카드를 인식할수 있게 유틸리티 프로그램을 다운받아 설치해 주어야 합니다. iptime 제품 드라이버는 http://iptime.org 에서 다운받아 설치하고, anygate 제품은 http://www.anygate.co.kr 에서 제품에 맞는 드라이버를 다운받아 설치해 주도록 합니다. 시디가 있다면 시디로 설치해 주어도 됩니다. 참고로 대표적 유틸리티 프로그램은 [Ralink Wireless Utility] 프로그램입니다.

바탕화면 우측 아래 [Ralink Wireless Utility] 트레이 아이콘을 선택, 우측 버튼을 클릭합니다.


우측 메뉴 중, "AP 모드로 전환" 이란 메뉴를 선택합니다.


"OK" 버튼을 선택합니다.


다음 그림은 ip가 변경전 그림입니다.


다음 그림은 "AP 모드로 전환" 했을 때의 그림입니다. 그림을 보는 바와 같이 무선 이름은 SoftAP-11 이고, ip 는 192.168.234.17 에서 192.168.123.1 로 변경되었음을 확인할 수 있습니다.


노트북이나 스마트폰에 설정한 무선이 잘보이는지 확인해 봅니다.


무선 공유기 사용을 종료하려면, 바탕화면 우측 아래 [Ralink Wireless Utility] 트레이 아이콘을 선택, 우측 버튼을 클릭합니다. 메뉴에서 "Client Mode로 전환"을 선택하면 원상복귀가 됩니다.


이 기능은 좀더 세부적으로 설정이 가능한데, 일반적인 무선 공유기에서 제공하는 기능을 제공합니다. 무선 공유기로 변경된 상태에서 다음 그림 "무선 아이콘" 을 선택합니다.


무선 이름 SoftAP-11 을 다른 이름으로 변경 가능합니다. 변경사항이 없다면, 초록색 화살표 버튼을 클릭합니다.


무선이 원활히 동작하지 않을 때 다른 채널을 바꾸면 됩니다. 다음으로 넘어 갑니다.


다음 그림은 암호화 보안 설정 기능입니다. 인증방식이 어렵다면 "open" 을 선택하고..


"보안 방식"을 WEP 으로 해줍니다.


"WEP 키" 에는 보안으로 사용할 패스워드를 입력합니다. 예를 들어 "WEP 키"를 123456 으로 하였다면, 노트북이나 스마트폰으로 공유기 연결시 패스워드는 123456 이 됩니다.


블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

원격 데스크톱 설치

 

원격 데스크톱은 windows Xp professional 이상 버전에서만 제공되는 기능으로 다른 컴퓨터에 쉽게 원격으로 연결해 줍니다. 물론 windows Xp professional 이하 버전도 가능하지만, 응용 프로그램을 이용하여야 하는데, 방법은 하단부에 설명되어 있으니 참고하시면 됩니다.

 

시작->제어판->시스템->원격을 선택하고, [사용자가 이 컴퓨터를 원격으로 연결할 수 있음] 항목이 있는지 확인합니다.



 

만약, 항목이 없다면, 따로 [원격 데스크톱] 구성요소를 설치해 주도록 합니다. 설치 순서는 제어판->프로그램 추가/제거->Windows 구성 요소 추가/제거를 선택해서 설치를 진행합니다.

 

 

”인터넷 정보 서비스(lls)”를 선택, “자세히” 단추를 클릭합니다.

  


그림의 “
World Wide Web 서비스”를 클릭하고, “자세히” 단추를 클릭합니다.

 


[원격 데스크톱 웹 연결]을 선택하고 창을 닫습니다.

 

 

윈도우 구성요소를 설치하는 것으로 CD를 요구하게 되는데, CD 삽입후 설치지도를 따라 가면 됩니다. 간혹 admxprox.dll 구성파일을 요구할 수도 있는데, 이 파일이 없으면 설치 진행이 되지 않는 점 참고해 주세요.

 


설치를 마무리를 합니다.

 

원격 데스크톱 설정

 

터미널 서버라 할 수 있는 원격 데스크톱을 사용하기 위해 시작->제어판->시스템->원격을 선택하고, [사용자가 이 컴퓨터를 원격으로 연결할 수 있음]에 체크해 주어야 합니다.

 


단일 사용자일 경우 설치를 마무리하고, 다중 사용자 계정일 경우는 [원격 사용자 선택]에서 원격을 허용할 사용자를 추가합니다.

 

사용자 계정 설정

 

다음 설정은 다중 사용자일 경우에만 해당사항입니다. [원격 사용자 선택] 항목을 클릭해서, “추가를 클릭합니다.

 


고급을 클릭합니다.

 


 
다음 그림은 생성된 사용자 계정입니다. 원격 지원을 허용할 사용자 계정을 다중 선택한 다음 확인을 클릭합니다.

 


 
여러 계정일 경우 ; 구분자로 입력되어 집니다.

 


확인버튼을 클릭하여, 설치를 마무리 합니다.

 

 

사용자 계정 추가/변경

 

[원격 데스크톱]은 단일 사용자로 접속하더라도, 그림을 보는 바와 같이 [컴퓨터 관리자] 계정과 사용하지 않는 [Guest]계정이 있어야 합니다. 만약 없다면 [새 계정 만들기]로 계정을 추가해 주어야 합니다.

 


사용자 계정 이름을 입력합니다.

 


[컴퓨터 관리자]를 선택하고, [계정 만들기]를 클릭합니다.

 


[원격 데스크톱]은 암호가 있어야 하므로 [암호 만들기]를 클릭합니다.

 


적당한 암호를 넣고, 마무리를 합니다.

 


다음과 같이 계정이 만들어 졌음을 확인합니다.


  

방화벽 예외 처리

 

방화벽을 사용하도록 설정되어 있는 경우, [원격 데스크톱]연결에 제한을 받게 되는데, 그래서 일부(또는 전체)를 예외 처리해 주어야 합니다. “제어판->Window 방화벽에서 [예외]를 선택하고, [원격 데스크톱]체크하고 창을 닫습니다.

  


공유기 포트 포워드 설정

 

공유기를 사용하고 있다면, 공유기에 대한 설정이 필요합니다. 공유기 설정모드에 접속해서 [원격 데스크톱] 3389 TCP 포트를 열어 주면 됩니다. iptime 접속관리 ip주소가 192.168.0.1 이고, 기타 공유기 접속경로 확인하는 방법은 이전 글[원격 공유기접속 관리 설정방법], 또는 [공유기]를 검색해서 참고합니다.

 

PC에서 공유기 어드민으로 접속하여 [관리도구] 버튼을 클릭, [고급설정] -> [NAT/라우터관리] -> [포트포워드 설정] 를 선택합니다.

 


[정의된 리스트]항목에 [원격데스크톱]을 선택하고, 내부/외부 포트가 3389 포트인지 확인합니다. [내부 ip주소]는 원격으로 접속할 컴퓨터입니다. 설정을 마쳤으면, [추가]하여 줍니다.

 

 

외부 ip 확인

 

앞서 설명한 ip는 내부 ip로서 외부에서는 사용할 수 없는 사설 ip입니다. 외부에서 접속허용할 경우, 우리는 외부(공인)ip를 알아야 [원격 데스크톱]연결이 가능해집니다. 다음 사이트(http://ip-adress.com)에 접속하는 것 만으로 공인 ip주소를 알 수 있습니다.

 

 

원격 데스크톱 연결

 

[원격 데스크톱]설정을 마무리하였다면, 이제 외부에서 접속하는 일만 남았습니다. 외부 컴퓨터에서 시작->프로그램->보조프로그램->원격데스크톱을 실행합니다.

 

 

앞서 말한 바와 같이 ip 192.168.0.2는 사설 ip로서 사내에서만 접속이 가능합니다. 외부에서 접속할 경우, 공인 iphttp://www.ip-adress.com의 결과 값, 124.58.205.17을 입력하고 접속하면 됩니다. 좀 더 고급스런 설정이 필요하다면, [옵션]을 선택합니다.

 

 

[컴퓨터]는 접속할 ip주소, [사용자 이름]은 사용자 계정이 됩니다. 이 밖에도 그림처럼 다양한 설정이 가능합니다.

 



쭉 (Zook) 국산 무료 원격제어 프로그램

이러한 과정이 어렵다면 원격제어 프로그램 Zook을 이용해 보는 것도 괜찮습니다.


사용하는 방법은 그리 어렵지 않습니다. 관련자료는 공식사이트를 통해 확인해보시고, 메뉴얼은 여기, 다운로드는 여기를 클릭합니다.

비영리로 사용하는 개인이라면 무료로 사용가능하고, 회원가입이 필요없습니다. 방화벽이나 공유기를 사용하더라도 그리 어렵지 않을 뿐 아니라 접속방법도 IP가 아닌 외우기 쉬운 전화번호 형태로 쉽게 접속할 수 있는데, 이는 외우기 쉬운 개인의 전화번호와 패스워드로 대체 가능한 부분입니다.
{쭉(Zook) 파일첨부}
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

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>

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

object apache_lookup_uri ( string $filename ) (PHP 4, PHP 5)

이 함수는 PHP를 아파치 모듈과 연동하였을 때만 작동합니다. 그리고 주어진 인자에 파일명 (URI)에 대한 정보, 헤더 정보를 다음 표의 값을 Object로 반환합니다.

 status
 the_request
 status_line
 method
 content_type
 handler
 uri
 filename
 path_info
 args
 boundary
 no_cache
 no_local_copy
 allowed
 send_bodyct
 bytes_sent
 byterange
 clength
 unparsed_uri
 mtime
 request_time

예제(ex #1

  <?php
 $info 
apache_lookup_uri('index.php?var=value&key=tempo'
);
 
print_r($info
);
 
/*
 결과:
 stdClass Object
 (
    [status] => 200
    [the_request] => GET /test.php HTTP/1.1
    [method] => GET
    [mtime] => 0
    [clength] => 0
    [chunked] => 0
    [content_type] => application/x-httpd-php
    [no_cache] => 0
    [no_local_copy] => 1
    [unparsed_uri] => /index.php?var=value&key=tempo
    [uri] => /index.php
    [filename] => /host/html/index.php
    [args] => var=value&key=tempo
    [allowed] => 0
    [sent_bodyct] => 0
    [bytes_sent] => 0
    [request_time] => 1307537760
 )
 */
 ?>


예제(ex #2
 <?php
 $info 
apache_lookup_uri('test.php'
);
 if(
file_exists($info->filename
)){
      echo 
"실제 존재하는 파일입니다."
;
 }
 
?> 

예제(ex #3
 <?php
 $info 
apache_lookup_uri('test.php'
);
 if(
$info->method === "GET"
){
      echo 
"이 파일은 GET으로 접속하였습니다."
;
 }
 
?> 
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

 

윈도우 xp나 NT, 그 이상 버전을 이용하면 누구나 집이나, 사무실에서 네트워크를 구축할 수 있습니다. 인터넷 공유기능을 이용하면 하나의 인터넷회선으로 여러 개의 컴퓨터를 동시에 인터넷을 이용할 수 있습니다. 여기서 일반적 공유기를 사용하지 않고, 크로스 케이블방식인 랜카드 2개로 컴퓨터 2대를 연결하여 홈네트워크를 구축해 보고자합니다.

우선 허브란 무엇일까요?

허브는 아시아와 여타 지역을 연결하는 중심에 있다는 것을 의미합니다. 네트워크장치의 하나인 허브는 컴퓨터간의 데이터 흐름을 조절하는 분배장치라 할 수 있습니다.

 


허브는 일반적으로 더미방식과 스위치방식이 있는데, 더미방식을 사용하는 장치는 가격이 저렴한 반면 허브에 연결에 컴퓨터 수가 많으면 많을 수록 속도가 느려진다는 단점을 가지고 있습니다.

예를 들어 10Mbps의 더미허브를 이용하여 5대의 컴퓨터를 쓰고 있다면, 각 컴퓨터의 5/1인 2Mbps로 데이터를 처리합니다.

반면 스위치허브는 같은 조건에도 모든 컴퓨터가 동일한 속도, 10Mbps의 속도를 유지하게 됩니다..

랜케이블이란? 

 

모뎀과 랜카드에 연결하는, 혹은 랜카드와 허브를 연결하는, 허브와 허브를 연결해 주는 선을 랜케이블이라고 말합니다. 랜케이블을 보통 UTP라고 하며, 모두 8가닥으로 이루어져 있습니다.

 

이중 실제로 데이터흐름에 관여하는 선은 1, 2, 3, 6번 선으로 1,2번은 송신용이고, 3,6번은 수신용으로 구분합니다.

모뎀과 컴퓨터간의 4선이 일렬로 연결되어 있다면, 다이렉트(스트레이트) 케이블이라고 부르며, 1번과 3번이 그리고 2번과 6번이 서로 꼬여 있으면 크로스 케이블이라고 합니다.

다이렉트케이블은 컴퓨터와 허브를 연결할때, 그리고 크로스케이블은 PC와 PC를 연결하는데 사용됩니다.

 


윈도우 네트워크 구성

2대의 컴퓨터로 네트워크 구축

 

2대의 컴퓨터를 네트워크를 구성하기 위해서는 기본적으로 2개의 랜카드가 필요합니다. 이는 공유기없이 2대의 컴퓨터가 동시에 인터넷이 가능하도록 해줄 것입니다.


인터넷회선에 직접 연결되어 있는 컴퓨터는 서버로 두되 다이렉트 케이블로 연결하고, 다시 서버를 통해 크로스 케이블로 다른 컴퓨터와 연결하여 인터넷을 공유하게 합니다. 




2대이상 컴퓨터로 네트워크 구축

만약, 2대 이상의 컴퓨터를 이용하여 네트워크를 구축하고자 한다면, 허브가 필요합니다. 하지만 허브를 통해 서버와 클라이언트를 구성하기 보다는 인터넷에 다이렉트로 연결되어 있는 서버에는 2개의 랜카드가 설치되고, 이중 서버에서 클라이언트쪽으로 연결되는 케이블은 다이렉트로 허브에 연결하면 안정적인 구성이 됩니다.

 

인터넷 연결공유

크로스 케이블이나 허브를 이용해 위와 같이 구성하였다면, 이제 다음 단계인 윈도우의 [인터넷 연결공유]설정이 필요합니다.

인터넷 연결공유는 하나의 메인 컴퓨터에 연결함으로서 홈네트워크 및 소규모 네트워크에 속한 컴퓨터를 모두 인터넷에 연결하게 하는 것입니다. 인터넷 연결공유 설정은 [네트워크 설정마법사]를 이용하여야 합니다.

이와 같은 설정으로 인터넷 익스플로러와 익스프레스와 같은 프로그램을 ISP공급자에 직접 연결된 것처럼 사용할 수 있게 되는 것입니다. 

 

랜카드의 설치
랜카드 추가 설치시 윈도우 XP의 경우 사용자가 구입할 수 있는 거의 모든 랜카드를 자동으로 설치해 주어 큰 무리는 없으니 설치후, 랜카드가 정상적으로 설치되었는지만 확인하면 됩니다. 확인하려면 [제어판]->[시스템]->[하드웨어]->[장치관리자]->[네트워크 어뎁터]에서 확인이 가능합니다.

네트워크 설정마법사로 홈랜 구축하기
먼저 인터넷에 직접 연결되어 있는 서버 컴퓨터에서 [시작]->[제어판]->[네트워크 설정마법사]를 실행하여 구성을 마무리 합니다. 나머지 클라이언트 컴퓨터에서는 다음과 같은 비슷한 과정으로 작업을 해야 하나, 설치 디스켓이 따로 있다면, 편의를 위해 [네트워크 설치 디스크]옵션을 이용해 자동으로 모든 과정을 마무리할 수 있으니 참고하세요.

 

 

 

 

 

 

 

 

 

 

 

 

 

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

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 초보

댓글을 달아 주세요

공유기를 통한 웹서버를 운영하다 보면 공유기 원격접속이 가끔 필요할 때가 있지 않을까 싶습니다. 공유기의 동작상태나 설정변경이 주요이기 때문입니다.

원격접속 설정을 위해 우선 공유기 어드민에 접속해야 합니다만, 제품마다 접속경로가 다르므로,  윈도우xp기준으로 "시작->실행->cmd"로 명령프롬프트창을 띄워 [ipconfig/all] 명령을 줍니다. 그림처럼 비슷한 정보를 출력하게 됩니다.

 

 


화살표가 가리키는 DHCP서버 ip 192.168.0.1이 어드민 접속경로라 생각하면 됩니다. 저는 IPtime을 쓰는데, 이 제품의 어드민 경로가 보통 192.168.0.1 입니다.

1. 외부 IP 주소 확인
인터넷 주소창에 http://192.168.0.1 로 입력 접속하여 [관리도구]를 선택합니다.

 


[시스템요약정보]를 클릭하여 우측 외부 IP 주소를 확인합니다. 현제 공유기에 연결된 공인 ip주소는111.112.113.114입니다.

 

 


2. 원격 관리 포트 설정
공유기의 외부 ip, 즉 공인 ip를 확인하였다면, 하단 메뉴 [고급설정->보안기능->공유기 접속 관리]를 클릭하여 [원격 관리 포트사용]을 체크 후 원격 포트를 임의로 1234로 입력하고 ,[적용] 버튼을 클릭합니다. 원격포트는 접속가능 포트로 기본 8088 입니다.

 


3. 원격 공유기 웹 설정 접속 방법
위와 같은 설정을 통해 외부 IP 확인과 원격관리포트 설정이 완료되었다면 외부(원격지)컴퓨터에서
인터넷 익스플로러를 실행 후 인터넷 주소창에 http://111.112.113.114:1234 로 접속해서 정상 작동되는지 확인해 봅니다.

 


원격 공유기 접속은 위 설정을 진행한 공유기에 연결된 PC에서는 접속이 불가하며, 다른 인터넷 회선에 연결된 PC를 통해서만 접속이 가능합니다.
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요

  • 제이라 2012.07.12 18:32  댓글주소  수정/삭제  댓글쓰기

    아~ 서버에서의 접속은 이렇게 설정 해야하나보군요.

    전 개인적인 일로인해 공유기 피시에 접속했어야했는데 막막했었는데

    이리저리 찾아보다가 프로그램베이의 팀 서포트라는 프로그램으로 해결했네요 ㅎㅎ

    아무튼 좋은글 잘 보고 갑니다.

  • 이상해 2014.05.04 05:29  댓글주소  수정/삭제  댓글쓰기

    관리도구 누르면 뭐 비밀번호 치라고 나오는데 뭐쳐야함 ㄷ

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

      무슨 제품인지는 모르겠지만 기본적으로 비밀번호가 설정된 경우 1111, admin, 1234 등등 해보셔야 할것 같습니다. 구매한 제품의 메뉴얼을 보면 나와있을 것입니다.

php.ini에서 allow_url_fopen 을 On으로 활성화하면 HTTP나 FTP를 통해 파일을 작성하거나 읽어올 수 있습니다. HTTP인 경우 include, include_once, require, require_once를 사용할 수 있고, FTP는 fopen 으로 접속가능합니다.

FTP 접속은 "ftp://아이디:패스워드@도메인" 으로 접속가능하나 동일 파일이 이미 존재하면 fopen함수 호출에 실패한다는 점에 주의해야 합니다.

예제 (ex #1
  <?php
 
// (ex #1
 
if($file = @fopen (
   
"ftp://user_id:user_passwd@example.com/public_html/test.php""w"
)){
      
// 여기에서 데이터를 씁니다.
      
fwrite ($file"원격 파일 쓰기<br />\n"
);
      
fclose ($file
);
 } else {
    echo 
"<p>원격 파일을 쓰도록 열 수 없습니다.\n"
;
    exit;
 }
 
// 결과: 원격 파일 쓰기<br />\n


 // 이미 (ex #1 에서 test.php파일을 작성하였으므로 (ex #2 는 원격파일 작성에 실패합니다.
 // (ex #2
 
if($file = @fopen (
   
"ftp://user_id:user_passwd@example.com/public_html/test.php""w"
)){
      
// 여기에서 데이터를 씁니다.
      
fwrite ($file"원격 파일 쓰기<br />\n"
);
      
fclose ($file
);
 } else {
    echo 
"<p>원격 파일을 쓰도록 열 수 없습니다.\n"
;
    exit;
 }

 
/*
 결과:
 Warning: fopen(ftp://...@example.com/public_html/test.php
[function.fopen]: failed to open stream: Remote file already exists
 and overwrite context option not specified
 <br /> FTP server reports  213 49 in C:\Server\public_html\test.php 
on line 4
 */
 
?>

원격 접속시 동일 파일이 존재하면 덮어 쓰기는 되지 않지만 데이터 추가는 가능합니다.

예제 (ex #2
 <?php
  
if($file = @fopen (
   
ftp://user_id:user_passwd@example.com/public_html/test.php
    "a"
)){
      
// 여기에서 데이터를 씁니다.
      
fwrite ($file"원격 파일 쓰기<br />\n"
);
      
fclose ($file
);
 } else {
    echo 
"<p>원격 파일을 쓰도록 열 수 없습니다.\n"
;
    exit;
 }

 
// 결과: 원격 파일 쓰기<br />\n원격 파일 쓰기<br />\n

 
?>

원격 접속시 읽어 오기도 가능합니다.

예제 (ex #3

 <?php
  
if($file = @fopen (
   
ftp://user_id:user_passwd@example.com/public_html/test.php,
     
"r"
)){
      
// 여기에서 데이터를 읽어 옵니다.
      
while(!feof($fp
)){
           
$file .= fread($fp,1024
);
      }
      
fclose ($fp
);
 } else {
    echo 
"<p>원격 파일을 열 수 없습니다.\n"
;
    exit;
 }

 echo 
$file
;

 
// 결과: 원격 파일 쓰기<br />\n원격 파일 쓰기<br />\n

 
?>


간단하게 원격파일 접속에 대해 설명은 되었지만, allow_url_fopen 를 활성화하는 것을 권하지는 않습니다.
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요