0Pricing
PHP Academy · Урок

Чтение файлов с помощью PHP

Читайте содержимое файлов с помощью file_get_contents и fopen/fread

«Чтение файлов с помощью PHP» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

PHP и файловая система

PHP позволяет читать, записывать и обрабатывать файлы в файловой системе сервера. Основные функции для чтения:

  • file_get_contents() — чтение всего файла как строки
  • fopen() + fread() — чтение на основе потока
  • file() — чтение файла в массив строк

file_get_contents()

Самый простой способ прочитать всё содержимое файла в строку:

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

Проверка существования файла

Всегда проверяйте это перед чтением, чтобы избежать ошибок:

<?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() — чтение в массив

file() читает файл и возвращает каждую строку как элемент массива:

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

Низкоуровневое чтение потока для больших файлов: обрабатывайте файл, не загружая его целиком в память:

<?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 для построчного чтения

fgets() читает по одной строке за раз, экономя память при работе с большими файлами:

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

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

fclose($handle);

Чтение удалённых файлов

file_get_contents() также может читать данные по URL HTTP, если включён параметр allow_url_fopen:

<?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 предоставляет объектно-ориентированный интерфейс для работы с файлами:

<?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)

Чтение файлов JSON

Распространённый шаблон: чтение и декодирование файла конфигурации 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');

Сведения о файле

Получайте метаданные файла, не читая его содержимое:

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

Блокировка файлов

Используйте блокировку файлов, чтобы предотвратить конфликты при одновременной записи:

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

Быстрая проверка

Какая функция PHP за один вызов считывает весь файл в строку?

Повторение: чтение файлов

Основы чтения файлов:

  • file_get_contents() — весь файл как строка
  • file() — файл как массив строк
  • fopen/fread/fclose — поток для больших файлов
  • fgets() — построчное чтение из потока
  • Всегда сначала проверяйте file_exists и is_readable
  • Используйте flock для безопасного одновременного доступа

Часто задаваемые вопросы

Урок «Чтение файлов с помощью PHP» бесплатный?

Да — полный текст урока «Чтение файлов с помощью PHP» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Чтение файлов с помощью PHP»?

Читайте содержимое файлов с помощью file_get_contents и fopen/fread Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Чтение файлов с помощью PHP»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Чтение файлов с помощью PHP
  2. Запись и добавление данных в файлы
  3. Работа с каталогами
  4. Обработка загрузки файлов
← Назад к PHP Academy