Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как дописать строку в конец файла

Короткий ответ

Передайте file_put_contents() флаг FILE_APPEND:

<?php
 
$file = sys_get_temp_dir() . '/recipe-append.txt';
file_put_contents($file, "first\n");
 
file_put_contents($file, "second\n", FILE_APPEND);
 
echo file_get_contents($file);

Результат:

first
second

Несколько процессов

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

<?php
 
$file = sys_get_temp_dir() . '/recipe-append.txt';
file_put_contents($file, '');
 
foreach (['a', 'b', 'c'] as $line) {
    file_put_contents($file, $line . "\n", FILE_APPEND | LOCK_EX);
}
 
echo count(file($file));

Результат:

3

Без флага файл стирается

Обычный вызов file_put_contents() заменяет содержимое целиком — проверьте, что флаг на месте.

Функции из этого ответа

  • file_put_contents — Записывает данные в файл.
  • fopen — Открывает файл для чтения или записи по частям.
  • fwrite — Записывает строку в открытый файл.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.