IT
PHP 파일 제어(file handling)
1. 파일 열기 (fopen)
$fp = fopen("data.txt", "r");
주요 모드 종류
모드
설명
'r'
읽기 전용. 파일이 있어야 함
'w'
쓰기 전용. 파일이 없으면 생성, 있으면 내용 삭제
'a'
쓰기 전용. 파일 끝에 추가. 파일이 없으면 생성
'x'
쓰기 전용. 새 파일만. 이미 있으면 실패
'r+'
읽기/쓰기. 파일이 있어야 함
'w+'
읽기/쓰기. 파일을 새로 만듬 (내용 삭제)
'a+'
읽기/쓰기. 파일 끝에 추가. 없으면 생성
2. 파일 쓰기 (fwrite)
$fp = fopen("data.txt", "w");
fwrite($fp, "Hello, world\n");
fclose($fp);
-
파일이 없으면 생성됨
-
fwrite()는 파일 포인터 위치에 데이터를 씀
3. 파일 읽기
1)
fgets()
— 한 줄씩 읽기
$fp = fopen("data.txt", "r");
while (!feof($fp)) {
$line = fgets($fp);
echo $line;
}
fclose($fp);
2)
fread()
— 지정한 길이만큼 읽기
$fp = fopen("data.txt", "r");
$content = fread($fp, filesize("data.txt"));
fclose($fp);
3)
file()
— 전체 파일을 배열로 읽기
$lines = file("data.txt");
foreach ($lines as $line) {
echo $line;
}
4)
file_get_contents()
— 파일 전체를 문자열로 읽기
$content = file_get_contents("data.txt");
echo $content;
4. 파일 존재 여부 확인
if (file_exists("data.txt")) {
echo "파일이 존재합니다";
}
5. 파일 삭제
unlink("data.txt");
6. 파일 이름 변경 / 이동
rename("oldname.txt", "newname.txt");
7. 파일 닫기
fclose($fp);
파일을 열었으면 항상 닫는 것이 좋습니다. (자원 누수 방지)
8. 파일 권한 확인 및 설정
chmod("data.txt", 0644); // 퍼미션 변경 (Linux/Unix)
if (is_readable("data.txt")) {
echo "읽기 가능";
}
9. 파일 잠금
다중 사용자 환경에서는 파일 잠금이 필요할 수 있습니다.
$fp = fopen("data.txt", "r+");
if (flock($fp, LOCK_EX)) {
fwrite($fp, "추가 내용");
flock($fp, LOCK_UN);
}
fclose($fp);
모드
설명
LOCK_SH
공유 잠금 (읽기 전용)
LOCK_EX
배타 잠금 (쓰기용)
LOCK_UN
잠금 해제
10. 디렉터리 제어
디렉터리 생성/삭제
mkdir("new_folder");
rmdir("new_folder");
디렉터리 열기 및 파일 목록 읽기
$dir = opendir("target_folder");
while (($file = readdir($dir)) !== false) {
echo $file . "<br>";
}
closedir($dir);
11. 실전 예시: 파일에 로그 저장
$log = "[" . date("Y-m-d H:i:s") . "] 사용자 접속\n";
file_put_contents("access.log", $log, FILE_APPEND);
-
file_put_contents()는 쓰기와 생성, 덮어쓰기 등을 간단하게 처리
-
FILE_APPEND를 지정하면 기존 내용 뒤에 덧붙임
12. 에러 처리
$fp = @fopen("data.txt", "r");
if (!$fp) {
die("파일을 열 수 없습니다");
}
@ 연산자는 오류 메시지를 숨깁니다. 실무에서는 try-catch 또는 error_log()와 함께 처리하는 것이 좋습니다.
요약
작업
함수
파일 열기
fopen()
파일 닫기
fclose()
파일 쓰기
fwrite(), file_put_contents()
파일 읽기
fgets(), fread(), file_get_contents()
파일 존재 확인
file_exists()
파일 삭제
unlink()
파일 이름 변경
rename()
디렉터리 작업
mkdir(), rmdir(), opendir() 등
파일 잠금
flock()
읽기/쓰기 권한 확인
is_readable(), is_writable()
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.