0Pricing
PHP Academy · Урок

Запись и добавление данных в файлы

Записывайте данные в файлы с помощью file_put_contents и FILE_APPEND

«Запись и добавление данных в файлы» — бесплатный урок PHP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 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() для установки прав доступа после создания

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

Урок «Запись и добавление данных в файлы» бесплатный?

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

Чему я научусь в уроке «Запись и добавление данных в файлы»?

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

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

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

Сколько времени занимает урок «Запись и добавление данных в файлы»?

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

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

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

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

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