홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
PHP 파일 시스템(File System) 다루기 #1
11년 전
[PHP]  파일 시스템(File System) 다루기 #1

PHP 파일열기와 닫기

무슨일을 하던지 절차가 있기 마련입니다. php에서 파일을 사용하는 일반적인 절차는 여타 언어와 다르지 않습니다. 파일을 열고, 용도에 맞게 사용하고, 닫아주면 됩니다.


1. 파일열기

php에서 파일을 사용하기 위해서 가장 먼저 해야 할 절차라면 파일을 여는 것입니다. php에서는 파일을 열기 위해서 fopen 함수를 제공합니다.

※php에서 사용되는 함수들은 C언어의 함수들과 상당히 유사한 것이 많습니다. 파일관련 함수들 역시 예외는 아닙니다.

int fopen (string filename, string mode [, int use_include_path])

위는 fopen 함수의 원형입니다. fopen 함수는 파일열기에 성공하면 다른 파일입출력 함수들이 참조할 정수 형의 파일핸들(포인터)을 리턴해 줍니다. 이 리턴 값을 변수에 저장했다가 대다수의 파일관련 함수들을 사용할 때 매개변수로 넘겨주게 되면 파일관련 함수들은 넘겨받은 변수의 값을 참조해서 사용하게 될 파일을 알수 있게 됩니다. 파일열기에 실패시에는 false를 뜻하는 0을 리턴하게 됩니다. 아래는 fopen 함수의 사용 예입니다.

//로컬에 있는 test.php 파일을 읽기전용으로 엽니다.
$fp=fopen("./test.php","r");


//http프로토콜을 사용해서 웹상에있는 test.php 파일을 읽기전용으로 엽니다.
$fp=fopen("http://www.musictrot.com/test.php/","r");


//ftp프로토콜을 사용해서 ftp서버상에 있는 test.php 파일을 읽기 전용으로 엽니다. ftp로 접속을 맺기 위해서는 경로상에 호스트명 뿐만 아니라, 사용자명과 비밀번호를 같이 입력해 놓아야 합니다. 아래의 ftp 예에서는 myuser가 사용자명 password가 비밀번호입니다.
$fp=fopen("ftp:myuser:password@musictrot.com/test.php","r");




fopen함수는 로컬에 저장되어 있는 파일 뿐만 아니라, http와 ftp 프로토콜을 이용해서 원격에 있는 파일을 열수도 있습니다. 하지만 이 부분은 보안에 민감한 사항이라서 몇가지 제약사항이 있습니다.

※ 제약사항

http와 ftp을 이용해서 파일을 열기 위해서는 php.ini 파일의 allow_url_fopen 옵션이 On으로 설정되어져 있어야 합니다.
아마도 웹호스팅 서비스를 받고 있다면 대부분의 서버관리자는 allow_url_fopen 옵션을 Off로 설정해 놓았을 것입니다.
ftp는 한가지 더 제약사항이 있는데 ftp 서버가 passive모드를 지원해야 만 합니다.

아래는 allow_url_fopen 옵션이 Off로 설정되었을때 http 프로토콜을 이용해서 fopen함수를 사용할 때 출력되는 에러메시지입니다.

Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration




위의 함수의 원형에서 알수 있듯이 fopen 함수는 3개의 파라미터를 인자로 받습니다.

1) 첫번째 파라미터
String filename 열고자 하는 파일명입니다.
2) 두번째 파라미터
String mode 파일을 여는 방법을 지정하는 파라미터로 읽기 - "r", 쓰기- "w", 추가 - "a" 옵션이 있습니다.

정리해 보면 아래와 같습니다.

r 읽기 전용으로 엽니다. 파일 포인터는 파일의 처음에 위치합니다.
r+ 존재하는 파일을 갱신(읽고,쓰기)용으로 엽니다. 파일 포인터는 파일의 처음에 위치합니다.

w 쓰기 전용으로 파일을 엽니다. 동일한 파일명의 파일이 존재하는 경우 모든 내용을 삭제합니다, 파일이 존재하지 않으면 파일을 새로 생성합니다. 두경우 모두 파일 포인터는 파일의 처음에 위치합니다.
w+ 갱신(읽고,쓰기)용으로 파일을 엽니다. 동일한 파일명의 파일이 존재하는 경우 모든 내용을 삭제하며, 파일이 존재하지 않으면 파일을 새로 생성합니다. 두경우 모두 파일 포인터는 파일의 처음에 위치합니다.

a 추가용으로 파일을 엽니다. 파일이 없으면 파일을 생성하고, 파일이 존재하면 파일포인터는 파일의 끝에 위치합니다.
a+ 추가용, 갱신용으로 파일을 엽니다. 파일이 없으면 파일을 생성하고, 파일이 존재하면 파일 포인터는 파일의 끝에 위치합니다.

3) 세번째 파라미터
use_include_path는 선택적 파라미터입니다.

정수"1"또는 true를 지정했을 경우 지정된 디렉토리에 파일이 존재하지 않으면 include path에서 파일을 찾습니다.

2. 파일닫기

파일에 대한 작업이 끝났을 경우 fclose 함수를 이용해서 파일을 닫아 줍니다. 파일을 닫지 않고 php 스크립트가 종료되더라도 파일은 알아서 닫히게 되지만, 전에 사용했던 파일 포인터를 재 사용해야 해야 할 경우, 또는 과다한 파일 함수 호출시 파일을 열지 못한는 경우가 생길 수도 있으므로 파일을 닫아주는 습관을 들이는 것이 좋습니다.

php에서 파일닫기를 위해서는 fclose 함수를 사용합니다.

int fclose(int fp);

파라미터인 fp는 fopen함수의 리턴값인 정수형 파일 포인터이며 파일닫기에 성공하면 true 를 뜻하는 정수1을 실패하면 false를 뜻하는 0 을 반환합니다.

아래는 test.php 파일을 읽기 전용으로 열어서 그 내용을 화면에 출력하는 간단한 예입니다. fgetc 함수는 파일의 내용을
한 글자씩 읽어들이는 함수입니다.

<?php
   $filename = "test.php";
   $fp = fopen($filename, "r") or die("파일열기에 실패하였습니다");

   $buffer = "";
   while(!feof($fp)){
      $buffer .= fgetc($fp);
   }

   echo "<pre>".htmlspecialchars($buffer)."</pre>";
   fclose($fp);
?>


추천추천 : 399 추천 목록
번호 제목
3,033
 PHP 정규식 정리
3,032
 PHP 정규식을 활용한 태그 및 특정 문자열 제거 및 추출 방법
3,031
 php 크롤링 또는 파싱 함수, 정규식 모음
3,030
 제이쿼리 기본 명령어
3,029
 웹페이지 가로 모드세로 모드 인식하기
3,028
 모바일 웹 화면 강제 회전(가로모드 고정)
3,027
 [HTML5]에서 frameset 대체 방법과 iframe 속성
3,026
 HTML <Audio> 사용법
3,025
 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!)
3,024
 PHP 파일 존재 여부 파악하기(로컬 파일 존재 및 원격지 파일 존재)
3,023
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,022
 CSS Layout 수평 & 수직 정렬
3,021
 여러 도메인들 간 쿠키 공유하기
3,020
 태그 사이에 있는 텍스트를 추출
3,019
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,018
 쿠키 생성,가져오기,삭제
3,017
 사용자 함수 모음
3,016
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,015
 [HTML5] <video> - DOM으로 제어하기
3,014
 HTML5 video 태그에서 영상 좌우반전
3,013
 PHP - 특정 태그 및 문자열 추출, 제거
3,012
 [PHP] define과 defined의 차이
3,011
 우클릭 완벽차단 스크립트
3,010
 iframe 높이 100% 맞추기
3,009
 curl 함수를 이용한 HTTP REFERER 변경
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.