고급 PHP 프로그래밍 – 파일 처리 – 0 – 파일 읽기와 쓰기

고급 PHP 프로그래밍 - 파일 처리 - 0 - 파일 읽기와 쓰기
고급 PHP 프로그래밍 – 파일 처리 – 0 – 파일 읽기와 쓰기

고급 PHP 프로그래밍 – 파일 처리 – 0편: 파일 읽기와 쓰기 완전 정복!

안녕하세요, 열정 넘치는 개발자 여러분! 😄
이번 시간부터는 고급 PHP 프로그래밍 – 파일 처리 시리즈를 시작합니다.
그 첫걸음은 바로 PHP의 파일 읽기와 쓰기, 즉 데이터를 파일로 저장하고 불러오는 방법이에요.

웹 애플리케이션에서 로그를 기록하거나, 사용자 데이터를 파일로 저장하거나, 설정 정보를 불러올 때 자주 쓰이는 기능이죠!
비유하자면, 데이터베이스가 거대한 창고라면 파일 처리는 수첩에 메모를 적는 것처럼 간편하면서도 강력한 도구입니다. ✍️📂


PHP에서 파일 처리 기본 개념

PHP는 C언어의 파일 처리 구조를 바탕으로, 파일을 열고 → 읽거나 쓰고 → 닫는 방식으로 작동해요.

기본 구조

$handle = fopen("파일경로", "모드");
작업 수행 (fread, fwrite 등)
fclose($handle);

파일 열기 – fopen()

$handle = fopen("example.txt", "r");
  • 첫 번째 인자: 파일 경로
  • 두 번째 인자: 모드(읽기, 쓰기 등)

자주 쓰는 파일 모드

모드 설명
r 읽기 전용, 파일이 있어야 함
w 쓰기 전용, 파일이 없으면 생성하고 있으면 초기화
a 추가 쓰기, 기존 내용 뒤에 덧붙임
r+ 읽기 + 쓰기, 파일이 있어야 함
w+ 읽기 + 쓰기, 기존 내용 초기화
a+ 읽기 + 추가 쓰기

💡 모드 이름은 영어 단어 read/write/append의 앞 글자에서 왔어요!


파일 쓰기 – fwrite()

예시: 텍스트 파일에 메시지 저장하기

$fp = fopen("memo.txt", "w");
fwrite($fp, "PHP 파일 쓰기 연습 중입니다!
");
fwrite($fp, "한 줄 더 추가해볼까요?");
fclose($fp);

✅ 결과: memo.txt에 두 줄의 내용이 저장됨

💡 은 줄바꿈 문자, 유닉스 계열에서 사용됨


파일 읽기 – fread(), fgets(), file_get_contents()

1. fread() – 지정한 바이트만큼 읽기

$fp = fopen("memo.txt", "r");
$content = fread($fp, filesize("memo.txt"));
fclose($fp);

echo $content;

2. fgets() – 한 줄씩 읽기

$fp = fopen("memo.txt", "r");
while (!feof($fp)) {
    echo fgets($fp) . "<br>";
}
fclose($fp);

3. file_get_contents() – 전체 파일 간편 읽기

$content = file_get_contents("memo.txt");
echo $content;

💡 file_get_contents()는 간단히 전체 파일 내용을 문자열로 반환해주기 때문에 가장 편리한 방법 중 하나예요!


파일에 한 줄씩 추가 – a 모드 활용

$fp = fopen("log.txt", "a");
fwrite($fp, date('Y-m-d H:i:s') . " 방문!
");
fclose($fp);

✅ 로그 기록을 남길 때 유용하게 사용됨


배열로 읽기 – file()

$lines = file("memo.txt");
foreach ($lines as $line) {
    echo $line . "<br>";
}

file()은 각 줄을 배열 요소로 저장해서 편하게 다룰 수 있어요


파일 유무 확인 – file_exists()

if (file_exists("memo.txt")) {
    echo "파일이 존재합니다!";
} else {
    echo "파일이 없어요!";
}

파일 삭제 – unlink()

unlink("memo.txt");

❗ 중요: 삭제된 파일은 복구 불가하니 주의하세요!


파일 처리 실전 예제

📘 예제: 방문자 수 카운트

$filename = "counter.txt";

if (!file_exists($filename)) {
    file_put_contents($filename, 0);
}

$count = (int)file_get_contents($filename);
$count++;
file_put_contents($filename, $count);

echo "방문자 수: {$count}명";

✅ 매 페이지 방문 시마다 방문자 수가 1씩 증가하는 간단한 카운터


주의해야 할 점 정리 ✅

항목 주의사항
파일 경로 정확히 입력 상대경로 또는 절대경로 실수 주의
쓰기 시 파일 권한 chmod 또는 웹 서버 사용자 권한 확인 필요
동시에 여러 요청 시 충돌 가능 파일 잠금 처리 필요 (flock())
대용량 파일 처리 시 메모리 관리 file_get_contents() 대신 fgets() 반복 사용 권장
보안 사용자 입력값으로 파일명 지정 시 디렉터리 탐색 공격 주의 (../ 등)

마무리하며

이번 시간에는 PHP의 파일 읽기와 쓰기에 대해 기초부터 실전 활용까지 알차게 배워봤어요!
정말 유용하면서도 실무에서 자주 쓰이는 기능이라, 로그 남기기, 텍스트 저장, 설정 불러오기 등 다양하게 응용할 수 있답니다 😊

다음 편에서는 파일 업로드 처리와 함께
move_uploaded_file(), $_FILES, 파일 확장자 검사 등 보안 중심의 실전 예제를 소개해드릴게요!

여러분의 코딩 수첩에 한 줄 메모가 되기를 바라며~
오늘도 즐거운 코딩 되세요! 감사합니다 🙌

답글 남기기