>  기사  >  백엔드 개발  >  PHP는 원격 HTTP 파일 및 FTP 파일 작업을 사용합니다.

PHP는 원격 HTTP 파일 및 FTP 파일 작업을 사용합니다.

伊谢尔伦
伊谢尔伦원래의
2016-11-22 10:25:441573검색

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[&#39;HTTP_USER_AGENT&#39;] . "\n");
    fclose ($file);
?>

참고:

위의 예에서 영감을 받아 이 기술을 사용하여 원격 로그 파일을 저장할 수 있습니다. 하지만 위에서 언급했듯이 fopen()으로 열린 URL에는 새 파일만 쓸 수 있습니다. 원격 파일이 이미 존재하는 경우 fopen() 함수 작업이 실패합니다. 분산 로깅과 유사한 작업을 수행하려면 syslog() 함수를 참조할 수 있습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.