루젠소프트 로고

216.73.216.41 TODAY : 6,215

PHP 강의

 > 

PHP - 초급

📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 01 파일 생성, 읽기, 쓰기

📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 01 파일 생성, 읽기, 쓰기
평점 10.0 라이센스 free
사용자평점 10.0 운영체제
다운로드 1 파일크기 0
제작사 LUZENSOFT 등록일 2025-07-03 19:02:22
조회수 3
- 설명

📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 01 파일 생성, 읽기, 쓰기








이번 주차부터는 #PHP에서 데이터를 영구적으로 저장하고 관리하는 기본적인 방법인 #파일 입출력과 웹 브라우저와 서버 간의 상태를 유지하는 데 사용되는 #쿠키 및 #세션에 대해 학습합니다. 오늘은 첫 번째 시간으로, PHP를 사용하여 파일을 생성하고, 내용을 읽고 쓰는 방법에 대해 자세히 알아보겠습니다.




파일 입출력의 중요성


uploadImage


웹 애플리케이션을 개발하다 보면 데이터를 단순히 화면에 출력하거나 일시적으로 사용하는 것 외에, 파일 형태로 저장하여 나중에 다시 사용해야 하는 경우가 많습니다.



  • 로그 기록: 애플리케이션의 동작 과정, 에러 발생 정보 등을 파일에 기록하여 문제 발생 시 추적 및 분석에 활용할 수 있습니다.

  • 데이터 저장: 사용자 설정, 임시 데이터, 간단한 데이터베이스 등의 형태로 파일을 사용하여 데이터를 저장하고 관리할 수 있습니다.

  • 템플릿 처리: 텍스트 기반 템플릿 파일을 읽어와 동적인 웹 페이지를 생성하는 데 활용할 수 있습니다.

  • 파일 업로드/다운로드: 사용자가 파일을 서버에 업로드하거나 서버에서 파일을 다운로드하는 기능을 구현하는 데 필수적입니다.







파일 생성하기

uploadImage



PHP에서 파일을 생성하는 가장 간단한 방법은 touch() 함수를 사용하는 것입니다.




touch() 함수




touch(string $filename, ?int $timestamp = null)



  • $filename: 생성할 파일의 경로와 이름을 지정합니다. 파일이 존재하지 않으면 새로운 빈 파일을 생성합니다. 파일이 이미 존재하면 파일의 접근 및 수정 시간을 현재 시간으로 갱신합니다.

  • $timestamp (선택 사항): 파일의 접근 및 수정 시간을 특정 타임스탬프로 설정합니다. 생략하면 현재 시간이 사용됩니다.




예시




현재 디렉토리에 new_file.txt라는 빈 파일을 생성하는 예시입니다.

PHP

<?php
$filename = 'new_file.txt';

if (touch($filename)) {
    echo "$filename 파일이 성공적으로 생성되었습니다.n";
} else {
    echo "$filename 파일 생성에 실패했습니다.n";
}
?>







파일 열고 닫기




파일에 내용을 읽거나 쓰기 위해서는 먼저 fopen() 함수를 사용하여 파일을 열어야 합니다. 작업이 완료되면 fclose() 함수를 사용하여 파일을 닫아야 합니다.




fopen() 함수




fopen(string $filename, string $mode, bool $use_include_path = false, ?resource $context = null): resource|false



  • $filename: 열고자 하는 파일의 경로와 이름을 지정합니다.

  • $mode: 파일을 열기 위한 모드를 지정합니다. 주요 모드는 다음과 같습니다.

    • 'r': 읽기 모드 (파일 포인터를 파일의 처음으로 설정). 파일이 존재해야 합니다.

    • 'w': 쓰기 모드 (파일 포인터를 파일의 처음으로 설정하고 파일 내용을 비웁니다. 파일이 없으면 생성합니다).

    • 'a': 추가 모드 (파일 포인터를 파일의 끝으로 설정합니다. 파일이 없으면 생성합니다).

    • 'x': 배타적 생성 및 쓰기 모드 (파일이 존재하면 false를 반환하고 실패합니다. 파일이 없으면 생성하고 쓰기 모드로 엽니다).

    • 'r+': 읽기 및 쓰기 모드 (파일 포인터를 파일의 처음으로 설정). 파일이 존재해야 합니다.

    • 'w+': 읽기 및 쓰기 모드 (파일 포인터를 파일의 처음으로 설정하고 파일 내용을 비웁니다. 파일이 없으면 생성합니다).

    • 'a+': 읽기 및 추가 모드 (파일 포인터를 파일의 끝으로 설정합니다. 파일이 없으면 생성합니다. 읽기는 처음부터 가능합니다).

  • $use_include_path (선택 사항): 파일을 include path에서 찾을지 여부를 설정합니다.

  • $context (선택 사항): 파일 작업을 위한 컨텍스트 리소스를 지정합니다.

  • 반환 값: 성공 시 파일 핸들 (resource), 실패 시 false를 반환합니다.




fclose() 함수




fclose(resource $stream): bool



  • $stream: 닫을 파일 핸들 (resource)을 지정합니다.

  • 반환 값: 성공 시 true, 실패 시 false를 반환합니다.




예시




my_document.txt 파일을 읽기 모드로 열고 닫는 예시입니다.

PHP

<?php
$filename = 'my_document.txt';
$file = fopen($filename, 'r');

if ($file) {
    echo "$filename 파일이 성공적으로 열렸습니다.n";
    fclose($file);
    echo "$filename 파일이 성공적으로 닫혔습니다.n";
} else {
    echo "$filename 파일 열기에 실패했습니다.n";
}
?>







파일에 내용 쓰기


uploadImage


fwrite() 함수를 사용하여 열린 파일에 내용을 쓸 수 있습니다.




fwrite() 함수




fwrite(resource $stream, string $data, ?int $length = null): int|false



  • $stream: 쓰기 작업을 수행할 파일 핸들 (resource)을 지정합니다.

  • $data: 파일에 쓸 문자열 데이터를 지정합니다.

  • $length (선택 사항): 쓸 데이터의 최대 바이트 수를 지정합니다.

  • 반환 값: 쓰여진 바이트 수 (성공 시), 오류 발생 시 false를 반환합니다.




예시




log.txt 파일에 현재 시간과 메시지를 추가하는 예시입니다.

PHP

<?php
$filename = 'log.txt';
$file = fopen($filename, 'a'); // 추가 모드로 열기

if ($file) {
    $timestamp = date('Y-m-d H:i:s');
    $message = "[$timestamp] 사용자가 페이지에 접근했습니다.n";
    $bytes_written = fwrite($file, $message);

    if ($bytes_written !== false) {
        echo "$bytes_written 바이트가 파일에 성공적으로 쓰여졌습니다.n";
    } else {
        echo "파일 쓰기에 실패했습니다.n";
    }

    fclose($file);
} else {
    echo "$filename 파일 열기에 실패했습니다.n";
}
?>







파일 내용 읽기

uploadImage



PHP는 파일 내용을 읽기 위한 다양한 함수를 제공합니다. 주요 함수는 fread(), fgets(), fgetc(), file_get_contents() 등이 있습니다.




fread() 함수




fread(resource $stream, int $length): string|false



  • $stream: 읽기 작업을 수행할 파일 핸들 (resource)을 지정합니다.

  • $length: 읽을 최대 바이트 수를 지정합니다.

  • 반환 값: 읽은 문자열 (성공 시), 파일 끝에 도달하거나 오류 발생 시 false를 반환합니다.




fgets() 함수




fgets(resource $stream, ?int $length = null): string|false



  • $stream: 읽기 작업을 수행할 파일 핸들 (resource)을 지정합니다.

  • $length (선택 사항): 읽을 최대 문자 수를 지정합니다 (개행 문자 포함). 생략하면 한 줄을 읽습니다.

  • 반환 값: 읽은 문자열 (성공 시), 파일 끝에 도달하거나 오류 발생 시 false를 반환합니다.




fgetc() 함수




fgetc(resource $stream): string|false



  • $stream: 읽기 작업을 수행할 파일 핸들 (resource)을 지정합니다.

  • 반환 값: 파일 포인터가 가리키는 한 문자를 문자열로 반환 (성공 시), 파일 끝에 도달하거나 오류 발생 시 false를 반환합니다.




file_get_contents() 함수




file_get_contents(string $filename, bool $use_include_path = false, ?resource $context = null, int $offset = 0, ?int $length = null): string|false



  • $filename: 읽을 파일의 경로와 이름을 지정합니다.

  • $use_include_path (선택 사항): 파일을 include path에서 찾을지 여부를 설정합니다.

  • $context (선택 사항): 파일 작업을 위한 컨텍스트 리소스를 지정합니다.

  • $offset (선택 사항): 파일 읽기를 시작할 바이트 오프셋을 지정합니다.

  • $length (선택 사항): 읽을 최대 바이트 수를 지정합니다. -1은 파일 끝까지 읽음을 의미합니다.

  • 반환 값: 파일의 내용을 문자열로 반환 (성공 시), 오류 발생 시 false를 반환합니다.




예시




data.txt 파일의 내용을 읽어 화면에 출력하는 예시입니다.

fread() 사용 예시:

PHP

<?php
$filename = 'data.txt';
$file = fopen($filename, 'r');

if ($file) {
    // 파일 전체 크기를 얻어와 한 번에 읽기
    $filesize = filesize($filename);
    $content = fread($file, $filesize);
    fclose($file);
    echo $content;
} else {
    echo "$filename 파일 열기에 실패했습니다.n";
}
?>



fgets() 사용 예시 (한 줄씩 읽기):

PHP

<?php
$filename = 'data.txt';
$file = fopen($filename, 'r');

if ($file) {
    while (($line = fgets($file)) !== false) {
        echo $line;
    }
    fclose($file);
} else {
    echo "$filename 파일 열기에 실패했습니다.n";
}
?>



file_get_contents() 사용 예시:

PHP

<?php
$filename = 'data.txt';
$content = file_get_contents($filename);

if ($content !== false) {
    echo $content;
} else {
    echo "$filename 파일 내용을 읽어오는 데 실패했습니다.n";
}
?>







결론




오늘은 #PHP를 사용하여 파일을 생성하고, 열고 닫으며, 내용을 읽고 쓰는 기본적인 방법에 대해 알아보았습니다. #파일 입출력은 웹 애플리케이션 개발에서 다양한 용도로 활용되므로, 각 함수의 특징과 사용법을 잘 이해하고 익혀두는 것이 중요합니다.

다음 시간에는 쿠키 설정 및 읽기에 대해 학습하겠습니다.