Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP fopen() 함수 완벽 정리 – 파일 열기 방법과 모드별 차이

fopen() 함수는 PHP에서 파일이나 URL을 여는 데 사용되는 함수입니다. 함수 실행에 실패하면 FALSE를 반환하고 오류 메시지를 출력하는데, 이때 함수 이름 앞에 '@' 기호를 붙이면 오류 출력을 숨길 수 있습니다.

문법

fopen(file_path, mode, include_path, context)

매개변수

  • file_path − 열고자 하는 파일의 경로입니다.

  • mode − 파일에 접근할 방식(모드)을 지정합니다.

    • "r" – 읽기 전용
    • "r+" – 읽기/쓰기
    • "w" – 쓰기 전용 (기존 내용을 모두 지우고 처음부터 작성)
    • "w+" – 읽기/쓰기 (기존 내용을 모두 지우고 처음부터 작성)
    • "a" – 쓰기 전용. 파일 끝에 이어서 작성하며, 파일이 없으면 새로 생성합니다.
    • "a+" – 읽기/쓰기. 기존 파일 내용을 유지한 채 파일 끝에 이어서 작성합니다.
    • "x" – 쓰기 전용. 새 파일을 생성하며, 이미 파일이 존재하면 FALSE와 오류를 반환합니다.
    • "x+" – 읽기/쓰기. 새 파일을 생성하며, 이미 파일이 존재하면 FALSE와 오류를 반환합니다.
  • include_path − php.ini에 설정된 include_path에서도 파일을 검색하려면 '1'로 설정합니다.

  • context − 파일 포인터의 컨텍스트를 지정합니다.

반환값

fopen() 함수는 성공 시 파일 포인터 리소스를 반환하고, 실패 시 FALSE와 함께 오류를 반환합니다. 오류 메시지가 화면에 표시되지 않도록 하려면 함수 이름 앞에 '@'를 붙여 호출하면 됩니다.

예를 들어 다음과 같은 내용을 담은 “new.txt” 파일이 있다고 가정해 보겠습니다.

The content of the file!

이제 실제 예제를 살펴보겠습니다.

예제 1: r+ 모드로 파일 읽기

<?php
    // 읽기/쓰기 모드
    $file_pointer = fopen("new.txt", 'r+')
    or die("파일이 존재하지 않습니다");
    $res = fgets($file_pointer);
    echo $res;
    fclose($file_pointer);
?>

출력 결과

The content of the file!

r+ 모드는 파일을 읽으면서 동시에 쓸 수 있게 해주므로, 기존 파일 내용을 확인하거나 수정할 때 유용하게 사용됩니다.

이번에는 “one.txt” 파일을 활용한 예제를 살펴보겠습니다.

예제 2: w+ 모드로 파일 쓰기 후 읽기

<?php
    // 읽기/쓰기 모드
    $file_pointer = fopen("one.txt", "w+");
    // 파일에 내용 쓰기
    fwrite($file_pointer, 'demo content');
    echo fread($file_pointer, filesize("new.txt"));
    fclose($file_pointer);
?>

출력 결과

demo content

w+ 모드는 파일을 생성하거나 기존 내용을 비운 뒤 읽기와 쓰기를 모두 수행할 수 있는 모드입니다. 참고로 파일에 데이터를 쓴 직후 처음부터 다시 읽으려면 rewind() 함수로 포인터 위치를 파일 시작점으로 되돌리는 것이 안전합니다. 마지막에는 fclose() 함수를 호출하여 파일 핸들을 반드시 닫아주는 습관을 들이는 것이 좋습니다.