
고급 PHP 프로그래밍 – 파일 처리 – 파일 읽기와 쓰기
안녕하세요! 😊
이번 시간에는 PHP 프로그래밍에서 아주 중요한 기능 중 하나인 파일 처리, 그 중에서도 파일 읽기와 쓰기에 대해 자세히 알아보겠습니다.
파일 처리는 마치 일기장을 꺼내서 내용을 읽고 새로 써내려가는 작업과 같아요.
서버에 저장된 텍스트, 로그, 설정 파일 등에 접근해 데이터를 저장하거나 불러오는 기능은 웹 개발뿐 아니라 백엔드 개발에서도 자주 쓰인답니다!
왜 파일 처리를 해야 할까요?
- 사용자가 남긴 로그나 데이터를 기록하고 싶을 때
- 설정 파일을 불러와야 할 때 (예:
.env
,.conf
) - 사용자 정보, 게시글 등을 간단히 저장하고 싶을 때
- CSV, JSON 등 파일로 데이터를 백업하거나 불러올 때
✅ 파일을 이용하면 데이터베이스 없이도 간단한 데이터 저장이 가능해요!
1. PHP에서 파일 열기: fopen()
✅ 기본 문법
$fp = fopen("파일경로", "모드");
📌 파일 모드 종류
모드 | 설명 |
---|---|
"r" |
읽기 전용 (파일이 있어야 함) |
"w" |
쓰기 전용 (파일이 없으면 생성, 있으면 덮어씀) |
"a" |
추가 쓰기 (기존 파일 뒤에 덧붙임) |
"r+" |
읽기 + 쓰기 (파일 존재 필수) |
"w+" |
읽기 + 쓰기 (기존 내용 삭제) |
"a+" |
읽기 + 추가 쓰기 (파일 없으면 생성) |
2. 파일 쓰기: fwrite()
🧪 예제 1: 새 파일에 문자열 쓰기
$fp = fopen("hello.txt", "w");
fwrite($fp, "안녕하세요!
PHP 파일 쓰기 예제입니다.");
fclose($fp);
✅
hello.txt
가 생성되며, 내용이 입력됩니다.
🧪 예제 2: 기존 파일에 내용 추가하기
$fp = fopen("log.txt", "a");
fwrite($fp, date("Y-m-d H:i:s") . " - 방문자 접속
");
fclose($fp);
→ 매번 접속할 때마다 접속 시간이 파일 끝에 추가돼요!
3. 파일 읽기: fread()
, file()
, file_get_contents()
🧪 예제 3: 전체 파일 내용 읽기 (fread
)
$fp = fopen("hello.txt", "r");
$content = fread($fp, filesize("hello.txt"));
fclose($fp);
echo $content;
🧪 예제 4: 줄 단위로 읽기 (fgets
)
$fp = fopen("multi-line.txt", "r");
while (!feof($fp)) {
echo fgets($fp) . "<br>";
}
fclose($fp);
🧪 예제 5: 배열로 읽기 (file()
함수)
$lines = file("multi-line.txt");
foreach ($lines as $line) {
echo $line . "<br>";
}
file()
은 파일을 한 줄씩 배열로 반환해줘서 매우 편리해요!
🧪 예제 6: 전체 문자열로 읽기 (file_get_contents()
)
$content = file_get_contents("hello.txt");
echo $content;
이 함수는 한 줄 코드로 파일 전체를 문자열로 불러올 수 있어요. 가장 많이 쓰이는 방식 중 하나랍니다!
4. 파일 존재 확인 및 삭제
✅ 파일이 있는지 확인: file_exists()
if (file_exists("hello.txt")) {
echo "파일이 존재합니다.";
}
✅ 파일 삭제: unlink()
if (file_exists("temp.txt")) {
unlink("temp.txt");
echo "파일을 삭제했습니다.";
}
⚠️
unlink()
는 복구 불가능하므로 꼭 주의해서 사용하세요!
5. 파일 열기/닫기 유의사항
fopen()
후에는 반드시fclose()
로 닫기- 파일을 읽기 전에는 존재 여부 확인(file_exists) 추천
- 쓰기 작업 시, 쓰기 권한이 있는지 확인 (
chmod 755
이상)
6. 실전 예제 – 방문자 로그 저장
$log = "[" . date("Y-m-d H:i:s") . "] 방문자가 접속했습니다.
";
file_put_contents("visitor.log", $log, FILE_APPEND);
file_put_contents()
는 파일을 쓰기 위한 가장 간단한 함수예요FILE_APPEND
옵션을 사용하면 기존 내용에 추가로 붙여줍니다
🔍 자주 사용하는 파일 함수 요약
함수 | 설명 |
---|---|
fopen() |
파일 열기 |
fwrite() |
파일에 쓰기 |
fread() |
파일에서 읽기 |
fgets() |
줄 단위 읽기 |
feof() |
파일 끝 확인 |
fclose() |
파일 닫기 |
file() |
파일을 배열로 읽기 |
file_get_contents() |
파일 전체를 문자열로 읽기 |
file_put_contents() |
파일에 쓰기 (간단 방식) |
unlink() |
파일 삭제 |
file_exists() |
파일 존재 여부 확인 |
❗ 파일 처리 시 주의할 점
항목 | 설명 |
---|---|
권한 | 쓰기/읽기 권한 없으면 에러 발생 (chmod , chown 필요) |
경로 보안 | ../ 등의 경로 조작에 주의 (사용자 입력에 경로 쓰지 않기) |
동시 처리 | 여러 사용자가 동시에 쓸 경우 fopen() + flock() 등으로 잠금 고려 |
문자 인코딩 | UTF-8, EUC-KR 등 인코딩 깨짐 주의 (mb_convert_encoding() 사용 가능) |
에러 처리 | 파일 오픈 실패 시 오류 메시지 출력 또는 로깅 필수 |
마무리하며 😊
PHP의 파일 처리는 생각보다 간단하지만, 그 안에 담긴 기능은 정말 막강해요!
로그 저장, 설정 파일 처리, CSV 백업, 간단한 게시판 구현 등 다양한 활용이 가능합니다.
데이터베이스를 쓰지 않아도 파일만으로도 꽤 많은 기능을 구현할 수 있죠.
다음 시간에는 디렉터리 읽기와 쓰기, 즉 폴더 다루기와 관련된 고급 기능을 알아볼게요!
늘처럼 활기찬 마음으로, 오늘도 멋진 개발 하세요! 💻📁✨