update : 2015.11.03
php.shukuma.com

검색:
 
 
원격 파일 사용하기

원격 파일 사용하기

php.ini에서 allow_url_fopen을 활성화하면, 대부분의 함수에서 파일명 인수로 HTTPFTP URL을 사용할 수 있습니다. 이와 더불어 URL을 include, include_once, require, require_once 구문에서 사용할수 있다. (PHP 5.2.0부터, 이 기능을 사용하려면 allow_url_include 를 활성화해야 합니다) PHP가 지원하는 프로토콜에 대한 정보는 Supported Protocols and Wrappers를 참고하십시오.

Note:

PHP 4.0.3 이하에서 URL 래퍼(wrapper)를 사용하기 위해서는 configure 옵션으로 --enable-url-fopen-wrapper 을 명시할 필요가 있다.

Note:

PHP 4.3 이하 버전의 PHP 윈도우 버전은 다음 함수에서 원격 파일 접근을 지원하지 않는다: include, include_once, require, require_once, 그리고 GD and Image 함수 목록 내의 imagecreatefromXXX 함수.

예를 들어, 이 기능을 사용하여 원격 웹 서버가 출력하는 내용을 파일로 열고, 그 출력 내용에서 원하는 데이타를 분석하여, 이 원하는 데이타로 데이타베이스 질의에 사용하거나, 웹 사이트에 맞는 모양으로 변형 시켜 출력할 수 있다

Example #1 원격 페이지의 제목을 가져오기

<?php
$file 
fopen ("http://www.php.net/""r");
if (!
$file) {
    echo 
"<p>Unable to open remote file.\n";
    exit;
}
while (!
feof ($file)) {
    
$line fgets ($file1024);
    
/* This only works if the title and its tags are on one line */
    
if (preg_match ("@\<title\>(.*)\</title\>@i"$line$out)) {
        
$title $out[1];
        break;
    }
}
fclose($file);
?>

해당 서버에 권한이 있는 사용자로 접속할수 있다면 FTP를 이용해 파일에 작성할 수도 있다. 이 방법으로 새로운 파일만 생성할수 있다. 기존의 파일을 덮어쓰려고 하면, fopen() 호출시에 실패하게 될것이다.

'anonymous'가 아닌 사용자로 접속하려면, URL내에 username을 (필요하다면 password도) 다음과 같이 명시해야 한다 : 'ftp://user:password@ftp.example.com/path/to/file'. (또한 HTTP에서 Basic authentication을 사용한 인증을 요구하는 경우에도 이와 같은 문법을 사용할 수 있다.)

Example #2 원격 서버에 데이터 저장하기

<?php
$file 
fopen ("ftp://ftp.php.net/incoming/outputfile""w");
if (!
$file) {
    echo 
"<p>원격 파일을 쓰도록 열 수 없습니다.\n";
    exit;
}
/* 여기에서 데이터를 씁니다. */
fwrite ($file"$HTTP_USER_AGENT\n");
fclose ($file);
?>

Note:

위의 예제를 보고, 이 테크닉을 사용하여 remote log를 작성할 수 있겠다고 생각할 수도 있다. 그러나 불행하게도 원격 파일이 이미 존재하면 fopen() 호출은 실패할것이기 때문에 동작하지 않을것이다. 그와 같은 분산 log를 수행하려면 syslog()를 참고하도록 한다.