0Pricing
PHP Academy · Lekcja

Odczytywanie plików za pomocą PHP

Odczytuj zawartość plików za pomocą file_get_contents oraz fopen/fread

Odczytywanie plików za pomocą PHP to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 1 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.

PHP i system plików

PHP może odczytywać, zapisywać i zarządzać plikami w systemie plików serwera. Najważniejsze funkcje służące do odczytu:

  • file_get_contents() — odczyt całego pliku jako ciągu znaków
  • fopen() + fread() — odczyt strumieniowy
  • file() — odczyt pliku do tablicy wierszy

file_get_contents()

Najprostszy sposób odczytania całej zawartości pliku do ciągu znaków:

<?php
$content = file_get_contents('/var/www/html/data.txt');

if ($content === false) {
    echo 'Could not read file';
} else {
    echo $content;
    echo strlen($content) . ' bytes';
}

Sprawdzanie, czy plik istnieje

Przed odczytem należy zawsze sprawdzić istnienie pliku, aby uniknąć błędów:

<?php
$path = '/var/data/config.json';

if (!file_exists($path)) {
    die('Config file not found');
}

if (!is_readable($path)) {
    die('No permission to read file');
}

$json = file_get_contents($path);
$config = json_decode($json, true);

file() — odczyt do tablicy

file() odczytuje plik i zwraca każdy wiersz jako element tablicy:

<?php
$lines = file('data.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach ($lines as $lineNum => $line) {
    echo ($lineNum + 1) . ': ' . $line . PHP_EOL;
}

fopen, fread, fclose

Niskopoziomowy odczyt strumieniowy dużych plików — przetwarzanie bez wczytywania całej zawartości do pamięci:

<?php
$handle = fopen('large_file.txt', 'r');

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

// Read 1KB at a time
while (!feof($handle)) {
    $chunk = fread($handle, 1024);
    echo $chunk;
}

fclose($handle);

fgets do odczytu wiersz po wierszu

fgets() odczytuje jeden wiersz naraz, co oszczędza pamięć w przypadku dużych plików:

<?php
$handle = fopen('server.log', 'r');

while (($line = fgets($handle)) !== false) {
    if (str_contains($line, 'ERROR')) {
        echo 'Found error: ' . $line;
    }
}

fclose($handle);

Odczytywanie plików zdalnych

file_get_contents() może również odczytywać dane z adresów URL HTTP, jeśli opcja allow_url_fopen jest włączona:

<?php
$json = file_get_contents('https://api.example.com/data.json');

// Prefer cURL for more control and error handling
$ch = curl_init('https://api.example.com/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status   = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

SplFileObject

SplFileObject udostępnia obiektowy interfejs do operacji na plikach:

<?php
$file = new SplFileObject('data.txt', 'r');

foreach ($file as $lineNum => $line) {
    echo $lineNum . ': ' . $line;
}

// Read specific line:
$file->seek(5);
echo $file->current(); // line 6 (0-indexed)

Odczytywanie plików JSON

Typowy schemat: odczytanie i zdekodowanie pliku konfiguracyjnego JSON:

<?php
function loadJsonConfig(string $path): array {
    if (!file_exists($path)) {
        throw new RuntimeException("Config not found: $path");
    }
    $json = file_get_contents($path);
    $data = json_decode($json, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new RuntimeException('Invalid JSON: ' . json_last_error_msg());
    }
    return $data;
}

$cfg = loadJsonConfig('/app/config.json');

Informacje o pliku

Pobieranie metadanych pliku bez odczytywania jego zawartości:

<?php
$path = '/var/www/html/image.jpg';

echo filesize($path);           // bytes
echo filetype($path);           // 'file'
echo filemtime($path);          // last modified timestamp
echo date('Y-m-d', filemtime($path));

$info = pathinfo($path);
echo $info['dirname'];    // /var/www/html
echo $info['basename'];   // image.jpg
echo $info['extension'];  // jpg

Blokowanie plików

Należy używać blokad plików, aby zapobiegać konfliktom podczas jednoczesnego zapisu:

<?php
$handle = fopen('counter.txt', 'r+');

if (flock($handle, LOCK_EX)) {  // exclusive lock
    $count = (int) fread($handle, 20);
    $count++;
    fseek($handle, 0);
    fwrite($handle, $count);
    fflush($handle);
    flock($handle, LOCK_UN);    // release
}

fclose($handle);

Szybkie sprawdzenie

Jaka funkcja PHP odczytuje cały plik do ciągu znaków w jednym wywołaniu?

Podsumowanie: odczytywanie plików

Najważniejsze informacje o odczytywaniu plików:

  • file_get_contents() — cały plik jako ciąg znaków
  • file() — plik jako tablica wierszy
  • fopen/fread/fclose — strumień do dużych plików
  • fgets() — odczyt strumieniowy wiersz po wierszu
  • przed rozpoczęciem należy zawsze sprawdzić file_exists i is_readable
  • należy używać flock, aby zapewnić bezpieczeństwo jednoczesnego dostępu

Często zadawane pytania

Czy lekcja „Odczytywanie plików za pomocą PHP” jest bezpłatna?

Tak — pełny tekst „Odczytywanie plików za pomocą PHP” 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 „Odczytywanie plików za pomocą PHP”?

Odczytuj zawartość plików za pomocą file_get_contents oraz fopen/fread Ć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 1 z 4.

Ile czasu zajmuje lekcja „Odczytywanie plików za pomocą PHP”?

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