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

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

고급 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 백업, 간단한 게시판 구현 등 다양한 활용이 가능합니다.
데이터베이스를 쓰지 않아도 파일만으로도 꽤 많은 기능을 구현할 수 있죠.

다음 시간에는 디렉터리 읽기와 쓰기, 즉 폴더 다루기와 관련된 고급 기능을 알아볼게요!
늘처럼 활기찬 마음으로, 오늘도 멋진 개발 하세요! 💻📁✨

답글 남기기