
PHP 강의
>PHP - 초급
📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 01 파일 생성, 읽기, 쓰기
![]() |
평점 | 10.0 | 라이센스 | free |
---|---|---|---|---|
사용자평점 | 10.0 | 운영체제 | ||
다운로드 | 1 | 파일크기 | 0 | |
제작사 | LUZENSOFT | 등록일 | 2025-07-03 19:02:22 | |
조회수 | 3 |
📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 01 파일 생성, 읽기, 쓰기
이번 주차부터는 #PHP에서 데이터를 영구적으로 저장하고 관리하는 기본적인 방법인 #파일 입출력과 웹 브라우저와 서버 간의 상태를 유지하는 데 사용되는 #쿠키 및 #세션에 대해 학습합니다. 오늘은 첫 번째 시간으로, PHP를 사용하여 파일을 생성하고, 내용을 읽고 쓰는 방법에 대해 자세히 알아보겠습니다.
파일 입출력의 중요성
웹 애플리케이션을 개발하다 보면 데이터를 단순히 화면에 출력하거나 일시적으로 사용하는 것 외에, 파일 형태로 저장하여 나중에 다시 사용해야 하는 경우가 많습니다.
로그 기록: 애플리케이션의 동작 과정, 에러 발생 정보 등을 파일에 기록하여 문제 발생 시 추적 및 분석에 활용할 수 있습니다.
데이터 저장: 사용자 설정, 임시 데이터, 간단한 데이터베이스 등의 형태로 파일을 사용하여 데이터를 저장하고 관리할 수 있습니다.
템플릿 처리: 텍스트 기반 템플릿 파일을 읽어와 동적인 웹 페이지를 생성하는 데 활용할 수 있습니다.
파일 업로드/다운로드: 사용자가 파일을 서버에 업로드하거나 서버에서 파일을 다운로드하는 기능을 구현하는 데 필수적입니다.
파일 생성하기
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";
}
?>
파일에 내용 쓰기
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";
}
?>
파일 내용 읽기
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를 사용하여 파일을 생성하고, 열고 닫으며, 내용을 읽고 쓰는 기본적인 방법에 대해 알아보았습니다. #파일 입출력은 웹 애플리케이션 개발에서 다양한 용도로 활용되므로, 각 함수의 특징과 사용법을 잘 이해하고 익혀두는 것이 중요합니다.
다음 시간에는 쿠키 설정 및 읽기에 대해 학습하겠습니다.