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

댓글을 달아 주세요