PHP 매뉴얼
이전 |  | 다음

# 19. 장. 원격 파일 사용하기

`php.ini`에서 `allow_url_fopen`을 활성화시키면, 대부분의 함수에 파일명의 인자로 HTTP와 FTP URL을 사용할수 있다. 이와 더불어 URL을 include(), include_once(), require(), require_once() 구문에서 사용할수 있다. `PHP`에 의해 지원되는 프로토콜에 대한 정보는 부록 J를 참고한다.

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

> 참고: PHP 4.3 이하 버전의 `PHP`의 윈도우 버전은 다음 함수에서 원격 파일 접근을 지원하지 않는다: include(), include_once(), require(), require_once(), 그리고 참고문헌 XLI, Image Functions 내의 imagecreatefromXXX 함수.

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

예 19-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 ($file, 1024); /* This only works if the title and its tags are on one line */ if (eregi ("<title>(.*)</title>", $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을 사용한 인증을 요구하는 경우에도 이와 같은 문법을 사용할 수 있다.)

예 19-2. 원격 서버에 데이터 저장하기

`<?php $file = fopen ("ftp://ftp.php.net/incoming/outputfile", "w"); if (!$file) { echo "<p>Unable to open remote file for writing.\n"; exit; } /* Write the data here. */ fputs ($file, "$HTTP_USER_AGENT\n"); fclose ($file); ?>`

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

이전 | 처음으로 | 다음
PUT 방식 지원 | 위로 | 연결 제어