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ówfopen()+fread()— odczyt strumieniowyfile()— 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']; // jpgBlokowanie 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ówfile()— plik jako tablica wierszyfopen/fread/fclose— strumień do dużych plikówfgets()— 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
- Odczytywanie plików za pomocą PHP
- Zapisywanie danych w plikach i dopisywanie do nich
- Praca z katalogami
- Obsługa przesyłania plików