php.ini 파일에서 allowed_url_fopen 옵션이 활성화되어 있는 한, 파일 이름을 매개변수로 요구하는 대부분의 함수에서 파일 이름 대신 HTTP 및 FTP URL을 사용할 수 있습니다. 동시에 URL은 include, include_once, require 및 require_once 문에도 사용할 수 있습니다. PHP가 지원하는 프로토콜에 대한 자세한 내용은 지원되는 프로토콜 및 캡슐화된 프로토콜을 참조하세요.
참고:
PHP 4.0.3 및 이전 버전에서 URL 래핑 프로토콜을 사용하려면 컴파일 타임에 --enable-url-fopen-wrapper 매개변수로 PHP를 구성해야 합니다.
버전 4.3 이전의 Windows 버전 PHP에서는 GD 및 이미지 함수의 include, include_once, require, require_once 및 imagecreatefromXXX 함수에 대한 원격 액세스를 지원하지 않습니다.
예를 들어 다음 예를 사용하여 원격 웹 서버에서 파일을 열고 필요한 출력 데이터를 구문 분석한 다음 이 데이터를 데이터베이스 검색에 사용하거나 단순히 웹 서버의 다른 페이지와 동일한 스타일을 사용할 수 있습니다. 귀하의 웹 사이트 내용을 출력하십시오.
예제 #1 원격 파일 제목 가져오기
<?php $file = fopen ("/", "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 서버와 링크를 설정한 경우 다음으로 요청을 보낼 수도 있습니다. 쓰기 작업을 위한 FTP 서버 파일입니다. 이 메서드는 새 파일을 만드는 데에만 사용할 수 있습니다. 기존 파일을 덮어쓰려고 하면 fopen() 함수 호출이 실패합니다.
"익명"이 아닌 사용자 이름으로 서버에 연결하려면 "ftp://user:password@ftp.example.com/path와 같이 사용자 이름(및 가능한 경우 비밀번호)을 지정해야 합니다. /to/file ” (기본 인증이 필요한 HTTP 프로토콜을 통해 원격 파일에 액세스할 때도 동일한 구문을 사용할 수 있습니다.)
예제 #2 원격 서버에 데이터 저장
<?php $file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w"); if (!$file) { echo "<p>Unable to open remote file for writing.\n"; exit; } /* Write the data here. */ fwrite ($file, $_SERVER['HTTP_USER_AGENT'] . "\n"); fclose ($file); ?>
참고:
위의 예에서 영감을 받아 이 기술을 사용하여 원격 로그 파일을 저장할 수 있습니다. 하지만 위에서 언급했듯이 fopen()으로 열린 URL에는 새 파일만 쓸 수 있습니다. 원격 파일이 이미 존재하는 경우 fopen() 함수 작업이 실패합니다. 분산 로깅과 유사한 작업을 수행하려면 syslog() 함수를 참조할 수 있습니다.