0Pricing
PHP Academy · บทเรียน

การเขียนและต่อท้ายไฟล์

เขียนข้อมูลลงไฟล์ด้วย file_put_contents และ FILE_APPEND

การเขียนและต่อท้ายไฟล์ เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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' — เขียน ตัดความยาวให้เป็นศูนย์หรือสร้างไฟล์
  • '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

ใช้ fputcsv() เพื่อเขียนบรรทัด CSV ที่จัดรูปแบบอย่างถูกต้อง:

<?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() สำหรับการเขียนแบบสตรีม
  • fputcsv() สำหรับผลลัพธ์ CSV
  • การเขียนแบบอะตอมิก: เขียนลงไฟล์ชั่วคราวแล้วใช้ rename()
  • chmod() เพื่อกำหนดสิทธิ์หลังสร้างไฟล์

คำถามที่พบบ่อย

บทเรียน “การเขียนและต่อท้ายไฟล์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเขียนและต่อท้ายไฟล์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเขียนและต่อท้ายไฟล์”

เขียนข้อมูลลงไฟล์ด้วย file_put_contents และ FILE_APPEND คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การเขียนและต่อท้ายไฟล์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอ่านไฟล์ด้วย PHP
  2. การเขียนและต่อท้ายไฟล์
  3. การทำงานกับไดเรกทอรี
  4. การจัดการการอัปโหลดไฟล์
← กลับไปที่ PHP Academy