
고급 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
, 파일 확장자 검사 등 보안 중심의 실전 예제를 소개해드릴게요!
여러분의 코딩 수첩에 한 줄 메모가 되기를 바라며~
오늘도 즐거운 코딩 되세요! 감사합니다 🙌