본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP file_put_contents — 파일에 한 번에 쓰기 완전 정리

by 왕진 2026. 6. 16.
반응형

 

 

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 — 읽기
반응형

댓글