PHP Academy · 강의

파일에 쓰기 및 추가하기

file_put_contents와 FILE_APPEND로 파일에 데이터를 쓰고 추가합니다.

레슨 2/413개 단계

파일에 쓰기 및 추가하기은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

PHP에서 파일 쓰기

PHP에서는 여러 가지 방법으로 파일에 쓸 수 있습니다:

  • file_put_contents() — 한 번의 호출로 문자열을 파일에 씁니다
  • fopen() + fwrite() — 스트림 기반으로 씁니다
  • 덮어쓰지 않고 추가하려면 FILE_APPEND 플래그를 사용합니다

file_put_contents()

문자열을 파일에 씁니다. 파일이 없으면 만들고, 이미 있으면 덮어씁니다:

<?php
$data = "Hello, PHP!\nThis is line 2.\n";

$bytes = file_put_contents('/tmp/output.txt', $data);

if ($bytes === false) {
    echo 'Failed to write';
} else {
    echo "Wrote $bytes bytes";
}

FILE_APPEND로 추가하기

FILE_APPEND 플래그를 사용하여 기존 파일의 끝에 콘텐츠를 추가합니다:

<?php
$logEntry = date('Y-m-d H:i:s') . ' - User logged in' . PHP_EOL;

file_put_contents(
    '/var/log/app.log',
    $logEntry,
    FILE_APPEND | LOCK_EX  // append + exclusive lock
);

fopen 쓰기 모드

fopen의 열기 모드는 파일을 여는 방식을 결정합니다:

  • 'w' — 쓰기, 길이를 0으로 줄이거나 생성합니다
  • 'a' — 쓰기, 추가, 파일이 없으면 생성합니다
  • 'x' — 쓰기, 파일이 이미 있으면 실패합니다
  • 'r+' — 처음부터 읽기+쓰기, 파일이 반드시 있어야 합니다

fopen + fwrite

세밀하게 제어할 수 있는 스트림 기반 쓰기입니다:

<?php
$handle = fopen('/tmp/report.txt', 'w');

if ($handle === false) die('Cannot open file');

fwrite($handle, "Report generated: " . date('Y-m-d') . "\n");
fwrite($handle, str_repeat('-', 40) . "\n");
fwrite($handle, "Total: 1234\n");

fclose($handle);
echo 'Report written';

CSV 파일 쓰기

올바른 형식의 CSV 줄을 쓰려면 fputcsv()를 사용합니다:

<?php
$rows = [
    ['Name', 'Email', 'Score'],
    ['Alice', 'alice@test.com', 95],
    ['Bob',   'bob@test.com',   87],
];

$handle = fopen('/tmp/results.csv', 'w');
foreach ($rows as $row) {
    fputcsv($handle, $row);
}
fclose($handle);

JSON 파일 쓰기

PHP 데이터를 JSON으로 직렬화한 다음 파일에 씁니다:

<?php
$config = [
    'version' => '2.0',
    'debug'   => false,
    'db'      => ['host' => 'localhost', 'port' => 3306],
];

$json = json_encode($config, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
file_put_contents('/app/config.json', $json);

echo 'Config saved';

원자적 파일 쓰기

원자적이고 충돌에 안전하게 업데이트하려면 임시 파일에 쓴 다음 이름을 변경합니다:

<?php
$target  = '/app/data.json';
$tmpFile = $target . '.tmp.' . uniqid();

$data = json_encode(['ts' => time(), 'value' => 42]);

file_put_contents($tmpFile, $data, LOCK_EX);
rename($tmpFile, $target);  // atomic on most OSes

echo 'File updated atomically';

권한 및 소유권

생성한 후 chmod()로 파일 권한을 설정합니다:

<?php
$path = '/var/www/uploads/avatar.jpg';

// Copy uploaded temp file to destination
move_uploaded_file($_FILES['avatar']['tmp_name'], $path);

// Set permissions (owner read/write, group read, world read)
chmod($path, 0644);

echo 'File uploaded and permissions set';

임시 파일

tempnam() 또는 tmpfile()로 임시 파일을 안전하게 생성합니다:

<?php
// Create a named temp file
$tmpPath = tempnam(sys_get_temp_dir(), 'php_');
file_put_contents($tmpPath, 'temp data');
$content = file_get_contents($tmpPath);
unlink($tmpPath);  // delete when done

// Anonymous temp file handle
$tmp = tmpfile();
fwrite($tmp, 'anonymous temp');
// auto-deleted when $tmp is garbage collected

파일 복사 및 이동

내장 함수로 파일을 복사하고 이름을 변경하거나 이동합니다:

<?php
// Copy a file
copy('/src/template.html', '/dst/page.html');

// Move / rename
rename('/tmp/upload_abc', '/storage/images/photo.jpg');

// Delete
unlink('/tmp/old_file.txt');

// Check if file was copied successfully
if (copy('a.txt', 'backup.txt')) {
    echo 'Backup created';
}

빠른 확인

파일을 덮어쓰지 않고 끝에 콘텐츠를 추가하려면 file_put_contents()에 어떤 플래그를 전달해야 하나요?

복습: 파일 쓰기

파일 쓰기의 핵심:

  • file_put_contents() — 가장 간단하게 쓰거나 덮어씁니다
  • 추가하려면 FILE_APPEND 플래그를 사용합니다
  • 스트리밍에는 fopen('a', ...) + fwrite()를 사용합니다
  • CSV 출력에는 fputcsv()를 사용합니다
  • 원자적 쓰기: 임시 파일에 쓴 다음 rename()합니다
  • 생성 후 권한을 설정하려면 chmod()를 사용합니다
무료로 시작

AI 튜터와 함께 PHP을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
49
레슨
195

자주 묻는 질문

“파일에 쓰기 및 추가하기” 강의는 무료인가요?

네 — “파일에 쓰기 및 추가하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“파일에 쓰기 및 추가하기”에서 뭘 배우나요?

file_put_contents와 FILE_APPEND로 파일에 데이터를 쓰고 추가합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

PHP Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“파일에 쓰기 및 추가하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. PHP로 파일 읽기
  2. 파일에 쓰기 및 추가하기
  3. 디렉터리 다루기
  4. 파일 업로드 처리
← PHP Academy(으)로 돌아가기