>  기사  >  백엔드 개발  >  PHP_php 팁의 fopen() 함수를 통해 원격 파일에 액세스하는 예

PHP_php 팁의 fopen() 함수를 통해 원격 파일에 액세스하는 예

WBOY
WBOY원래의
2016-05-16 20:31:301451검색

PHP를 사용하면 사용자는 브라우저를 통해 서버 측 파일에 액세스할 수 있을 뿐만 아니라 HTTP 또는 FTP와 같은 프로토콜을 통해 다른 서버의 파일에 액세스할 수도 있습니다. 파일 이름을 매개변수로 요구하는 대부분의 기능에서 HTTP 및 FTP URL을 사용할 수 있습니다. . 파일 이름을 바꾸려면 . fopen() 함수를 사용하여 지정된 파일 이름과 리소스를 스트림에 바인딩합니다. 파일 이름이 "scheme://..." 형식인 경우 URL로 처리되며 PHP는 해당 파일을 검색합니다. 이 모드를 처리하기 위한 프로토콜 프로세서(캡슐화 프로토콜이라고도 함)

원격으로 파일에 액세스해야 하는 경우 PHP 구성 파일에서 "allow_url_fopen" 옵션을 활성화하여 fopen() 함수를 사용하여 원격 파일을 열어야 합니다. 또한 다른 서버의 파일에 액세스 권한이 있는지 확인해야 합니다. HTTP 프로토콜을 사용하여 원격 파일에 연결하는 경우 해당 파일은 "읽기 전용" 모드로만 열 수 있습니다. 액세스해야 하는 원격 FTP 서버에 제공된 사용자에 대해 "쓰기 가능 권한"이 활성화된 경우 FTP 프로토콜을 사용하여 원격 파일에 연결할 때 "쓰기 전용" 또는 "읽기 전용" 모드를 사용할 수 있습니다. 하지만 "읽기 및 쓰기 가능" 모드는 사용할 수 없습니다.

PHP를 사용하여 원격 파일에 액세스하는 것은 동일한 읽기 및 쓰기 기능을 사용하여 로컬 파일에 액세스하는 것과 같습니다. 예를 들어, 다음 예제를 사용하여 원격 웹 서버에서 파일을 열고, 필요한 출력 데이터를 구문 분석한 다음, 이 데이터를 데이터베이스 검색에 사용하거나, 웹 사이트 콘텐츠의 나머지 부분과 스타일이 일치하도록 간단히 출력할 수 있습니다. 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

//http를 통해 원격 파일 열기
$file = fopen(http://www.jb51.net, "r") or die("원격 파일을 열지 못했습니다!!");
동안(!feof($file)){
$line = fgets($file,1024); //각 줄 읽기
//원격 파일에서 제목 표시가 발견되면 제목을 제거하고 파일을 읽지 않고 루프를 종료합니다.
If (preg_match("/(.*/)",$line,$out)){ //정규 표현식을 사용하여 제목 태그 일치
$ Title = $ OUT [1] // 제목 표시에 있는 제목 문자를 제거합니다
Break; //루프를 종료하고 원격 파일 읽기를 종료합니다
}
}

fclose($file);
에코 $title;
?>

적법한 접근 권한이 있는 경우 사용자로 FTP 서버에 연결하여 FTP 서버의 파일에 쓸 수 있습니다. 이 기술을 사용하여 원격 로그 파일 및 기타 작업을 저장할 수 있지만 이 방법을 사용하여 기존 파일을 덮어쓰려고 하면 fopen() 함수 호출이 실패합니다. 그리고 익명이 아닌 사용자 이름으로 서버에 연결해야 하며 "ftp://user:password@ftp.lampbrother.net/path/to"와 같이 사용자 이름(또는 비밀번호까지)을 지정해야 합니다. /파일". 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

//ftp.lampbrother.net 원격 서버에 파일을 생성하고 쓰기 모드로 엽니다
파일 = fopen("ftp://user:password@ftp.lapbrother.net/path/to/file", "w");
//원격 파일에 문자열 쓰기
​​fwrite($file, "리눅스 아파치 MySQL PHP");

​​fclose($file);
?>

원격 호스트 접속 시 타임아웃 오류를 방지하기 위해 set_time_limit() 함수를 사용하여 프로그램 실행 시간을 제한할 수 있습니다.

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