PHP Academy · Lekcja

Zapisywanie danych w plikach i dopisywanie do nich

Zapisuj dane w plikach za pomocą file_put_contents i FILE_APPEND

Lekcja 2 z 413 kroki

Zapisywanie danych w plikach i dopisywanie do nich to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

Zapisywanie plików w PHP

PHP udostępnia kilka sposobów zapisywania plików:

  • file_put_contents() — zapis ciągu znaków do pliku w jednym wywołaniu
  • fopen() + fwrite() — zapis strumieniowy
  • flagi FILE_APPEND należy użyć, aby dopisywać dane zamiast nadpisywać plik

file_put_contents()

Zapisuje ciąg znaków do pliku — tworzy plik, jeśli nie istnieje, a jeśli istnieje, nadpisuje go:

<?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";
}

Dopisywanie za pomocą FILE_APPEND

Aby dodać zawartość na końcu istniejącego pliku, należy użyć flagi 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
);

Tryby zapisu fopen

Tryby otwierania funkcji fopen określają sposób otwarcia pliku:

  • 'w' — zapis, skrócenie do zerowej długości lub utworzenie pliku
  • 'a' — zapis, dopisywanie, utworzenie, jeśli plik nie istnieje
  • 'x' — zapis, błąd, jeśli plik już istnieje
  • 'r+' — odczyt i zapis od początku, plik musi istnieć

fopen + fwrite

Zapis strumieniowy zapewniający precyzyjną kontrolę:

<?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';

Zapisywanie plików CSV

Należy używać funkcji fputcsv(), aby zapisywać prawidłowo sformatowane wiersze 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);

Zapisywanie plików JSON

Należy serializować dane PHP do formatu JSON i zapisać je do pliku:

<?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';

Atomowy zapis plików

Należy zapisać dane do pliku tymczasowego, a następnie zmienić jego nazwę, aby uzyskać atomową aktualizację odporną na awarie:

<?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';

Uprawnienia i właściciel pliku

Po utworzeniu pliku należy ustawić jego uprawnienia za pomocą 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';

Pliki tymczasowe

Pliki tymczasowe należy bezpiecznie tworzyć za pomocą tempnam() lub 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

Kopiowanie i przenoszenie plików

Pliki można kopiować oraz zmieniać ich nazwy lub przenosić je za pomocą wbudowanych funkcji:

<?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';
}

Szybkie sprawdzenie

Jaką flagę należy przekazać do file_put_contents(), aby dodać zawartość na końcu pliku zamiast go nadpisywać?

Podsumowanie: zapisywanie plików

Najważniejsze informacje o zapisywaniu plików:

  • file_put_contents() — najprostszy zapis lub nadpisanie
  • flaga FILE_APPEND do dopisywania danych
  • fopen('a', ...) + fwrite() do zapisu strumieniowego
  • fputcsv() do zapisu danych CSV
  • zapis atomowy: zapis do pliku tymczasowego + rename()
  • chmod() do ustawiania uprawnień po utworzeniu pliku
Bezpłatny start

Ucz się PHP dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
49
Lekcje
195

Często zadawane pytania

Czy lekcja „Zapisywanie danych w plikach i dopisywanie do nich” jest bezpłatna?

Tak — pełny tekst „Zapisywanie danych w plikach i dopisywanie do nich” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zapisywanie danych w plikach i dopisywanie do nich”?

Zapisuj dane w plikach za pomocą file_put_contents i FILE_APPEND Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Zapisywanie danych w plikach i dopisywanie do nich”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Odczytywanie plików za pomocą PHP
  2. Zapisywanie danych w plikach i dopisywanie do nich
  3. Praca z katalogami
  4. Obsługa przesyłania plików
← Powrót do PHP Academy