file_put_contents() 함수는 문자열을 파일에 기록하는 PHP 내장 함수입니다. 이 함수는 파일에 실제로 기록된 바이트 수를 반환하며, 실행에 실패하면 FALSE를 반환합니다.
구문
file_put_contents(file_path, data, flags, context)
매개변수
file_path − 데이터를 기록할 파일의 경로입니다.
data − 파일에 기록할 데이터를 지정합니다.
flags − 파일을 여는 방식과 데이터를 기록하는 방식을 지정합니다.
FILE_USE_INCLUDE_PATH − include 경로에서 파일명을 검색합니다.
FILE_APPEND − 파일이 이미 존재하는 경우 내용을 덮어쓰지 않고 기존 내용 끝에 데이터를 추가합니다.
LOCK_EX − 쓰기 작업이 진행되는 동안 파일에 배타적 잠금(exclusive lock)을 설정하여 다른 프로세스의 동시 접근을 방지합니다.
FILE_TEXT − 데이터를 텍스트 모드로 기록합니다. FILE_BINARY와 함께 사용할 수 없습니다.
FILE_BINARY − 데이터를 바이너리 모드로 기록합니다. 기본 동작 방식이며, FILE_TEXT와 함께 사용할 수 없습니다.
context − 스트림(stream)의 동작 방식을 설정합니다.
참고: FILE_TEXT와 FILE_BINARY 플래그는 PHP 6에서 도입될 예정이었으나 해당 버전이 정식 출시되지 않아 현재 PHP 버전에서는 사용할 수 없습니다.
반환값
file_put_contents() 함수는 파일에 성공적으로 기록된 바이트 수를 반환하며, 실패한 경우 FALSE를 반환합니다.
예제
<?php
echo file_put_contents("new.txt", "This is it!");
?>
출력
11
"This is it!" 문자열이 총 11바이트이므로, 기록된 바이트 수인 11이 출력됩니다.
이번에는 기존 파일 내용 뒤에 새로운 데이터를 추가하는 예제를 살펴보겠습니다.
예제
<?php
$file_path = 'one.txt';
$myfile = file_get_contents($file_path);
// 기존 내용에 추가(Append)
$myfile .= "Demo line!\n";
echo file_put_contents($file_path, $myfile);
?>
위 예제는 file_get_contents()로 기존 파일의 내용을 읽어 온 뒤, 새로운 문장을 덧붙이고 다시 저장하는 방식입니다. 이때 file_put_contents()가 반환하는 값은 기존 내용을 포함한 전체 바이트 수이므로, 파일이 비어 있었다면 "Demo line!\n"(11바이트)에 해당하는 값이 출력됩니다. 기존 내용이 있다면 그 길이만큼 더해진 값이 반환됩니다.