sub_title
 PHP
제   목 PHP 파일 시스템(File System) 다루기 #1
작성자 웹마당넷 등록일 2009-02-14 18:12:25 조회수 21,355

[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.wembadang.net/test.php/","r");


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

$fp=fopen("ftp:myuser:password@webmadang.net/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);
?>




작성자: 웹마당넷(webmadang@webmadang.net)   http://www.webmadang.net
 
0
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
55  PHP - 파일다운로드 함수   member 오렌지 0 / 0 12940 2009-03-07
54  fsockopen 함수를 이용해서 웹사이트에 데이터 전송하기   member 높이뜬새 2 / 0 11593 2009-03-06
53  PHP - 웹사이트의 유효성 체크   member 오렌지 0 / 0 7963 2009-02-28
52  PHP 현재 페이지의 도메인명이나 url등의 정보 알아오기   member 높이뜬새 6 / 0 108282 2009-02-27
51  PHP 파일 한줄 읽기(fgets함수)   admin 웹마당넷 0 / 0 32675 2009-02-24
50  PHP 파일 내용 읽기(fread함수)   admin 웹마당넷 3 / 0 27188 2009-02-15
49  PHP 파일 시스템(File System) 다루기 #1   admin 웹마당넷 0 / 0 21355 2009-02-14
48  PHP 썸네일(Thumbnail) 이미지 만들기 함수 첨부파일   member 티란투라 0 / 0 10646 2009-02-08
47  PHP - xml 읽어들이기(read) 클래스   member 오렌지 0 / 0 9398 2009-02-08
46  PHP와 자바스크립트를 이용한 드롭다운 메뉴 첨부파일   member 오렌지 0 / 0 11843 2009-02-07
45  PHP로 MySQL 데이터베이스 만들기(생성하기)   admin 웹마당넷 1 / 0 10407 2009-01-24
44  PHP MySQL 명령어 실행 함수 mysql_query   admin 웹마당넷 1 / 0 47227 2009-01-21
43  PHP 에러 처리 함수 die   admin 웹마당넷 4 / 0 41735 2009-01-20
42  PHP no-cache 설정(뒤로가기 막기)   admin 웹마당넷 1 / 0 31223 2009-01-17
41  PHP 폼(form)값의 유효성 체크   admin 운영자 0 / 0 9769 2009-01-13
40  PHP - SELECT로 반환된 레코드 갯수와 컬럼의 갯수를 알려주는 함수   admin 웹마당넷 0 / 0 18910 2009-01-11
39  PHP 버전 확인하기   admin 웹마당넷 0 / 0 13007 2009-01-06
38  PHP 한글 문자열 자르기   admin 웹마당넷 0 / 0 11833 2008-12-27
37  PHP 오늘날짜를 기준으로 이전,이후 날짜구하기   admin 웹마당넷 0 / 1 15206 2008-12-25
36  PHP 이름이 같은 폼태그(Form Tag)의 값(value) 처리하기   admin 웹마당넷 0 / 0 33195 2008-12-06
35  PHP split 함수를 이용한 문자열 분리   admin 웹마당넷 1 / 0 52817 2008-12-06
34  PHP explode 함수를 이용한 문자열 분리   admin 웹마당넷 0 / 0 11565 2008-12-01
33  PHP 달력(Calendar) 입니다. 이미지  [1] member 티란투라 0 / 0 11329 2008-11-16
32  플래쉬 무비클립을 캡쳐하는 PHP 소스 입니다. 첨부파일   member 사라마음 0 / 0 7103 2008-11-14
31  PHP에서 세션(session) 사용하기   member 웹스톤 0 / 0 14094 2008-08-31
write
button [1] [3] [4] button