반응형
Web Development · PHP file_put_contents
PHP file_put_contents —
파일에 문자열을 한 번에 쓰기
파일이 없으면 생성, 있으면 덮어쓰기
시작 오늘 분석할 코드
<?php $filename = "test.txt"; $contents = "abcdefghijklmn"; file_put_contents($filename, $contents); // 파일 생성 또는 기존 파일 덮어쓰기 print "기록하였습니다."; ?>
파일이 존재하지 않으면 새로 만들고, 이미 있으면 기존 내용을 덮어쓴다. 한 줄로 끝나는 가장 짧은 파일 쓰기.
용어 용어 정리
file_put_contents()문자열을 파일에 쓰는 함수
덮어쓰기기본 동작 — 기존 내용 사라짐
FILE_APPEND덮어쓰지 않고 끝에 추가
LOCK_EX동시 쓰기 방지 잠금
반환값쓴 바이트 수 / 실패 시 false
vs fopen+fwrite한 줄로 끝, 자동으로 닫힘
권한 필요디렉토리에 쓰기 권한
반대file_get_contents — 읽기
1 매개변수
file_put_contents($파일명, $내용); // 기본 — 덮어쓰기 file_put_contents($파일명, $내용, FILE_APPEND); // 끝에 추가 file_put_contents($파일명, $내용, FILE_APPEND | LOCK_EX); // 추가 + 잠금
2 덮어쓰기 vs 추가 — FILE_APPEND
| 플래그 | 동작 |
|---|---|
| 없음 (기본) | 기존 내용 모두 지우고 새로 씀 |
FILE_APPEND |
기존 내용 끝에 새 내용 이어 붙임 |
// 로그 파일 — 매번 한 줄 추가 file_put_contents("log.txt", "[" . date('Y-m-d H:i') . "] 사용자 로그인\n", FILE_APPEND);
3 동시 쓰기 보호 — LOCK_EX
여러 프로세스가 동시에 같은 파일에 쓰면 내용이 섞일 수 있다. LOCK_EX로 한 번에 한 명만 쓰게 보호한다.
file_put_contents("counter.txt", $count, LOCK_EX);
반응형
4 배열을 쓰면?
$lines = ["A", "B", "C"]; file_put_contents("out.txt", $lines); // → "ABC" — 배열 원소가 그냥 이어붙음 (구분자 없음) // 줄바꿈으로 구분하려면 file_put_contents("out.txt", implode("\n", $lines)); // → "A\nB\nC"
5 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| 덮어쓰기 인지 못함 | 중요한 내용 사라짐 | FILE_APPEND 사용 |
| 권한 부족 | 경고 + false 반환 | 디렉토리 권한 확인 (chmod) |
| 상대 경로 | 실행 위치에 따라 다른 곳에 생성 | __DIR__ 활용 |
| 한글 인코딩 차이 | EUC-KR 환경에서 깨짐 | mb_convert_encoding 활용 |
| 대용량 한 번에 | 메모리 부담 | fopen + fwrite로 분할 |
핵심 한 줄 요약
file_put_contents()문자열을 파일에 한 번에 쓰기
기본덮어쓰기 — 기존 내용 사라짐
FILE_APPEND끝에 이어 쓰기 (로그용)
LOCK_EX동시 쓰기 보호
반환값쓴 바이트 수 / false (실패)
권한디렉토리에 쓰기 권한 필요
반대file_get_contents — 읽기
반응형
'php' 카테고리의 다른 글
| PHP unlink — 파일 삭제 완전 정리 (0) | 2026.06.16 |
|---|---|
| PHP copy — 파일 복사 완전 정리 (0) | 2026.06.16 |
| PHP file_get_contents — 파일 내용을 한 번에 읽기 완전 정리 (0) | 2026.06.16 |
| PHP checkdate — 날짜 유효성 검사 완전 정리 (0) | 2026.06.16 |
| PHP mktime — 특정 날짜·시각의 타임스탬프 만들기 완전 정리 (0) | 2026.06.16 |
왕진 블로그

댓글