Раздел вопрос-ответ Как дописать строку в конец файла на php? file_put_contents

file_put_contents перетирает файл. Как используя file_put_contents записывать в файл новую строку?

share

1 ответ

file_put_contents() — функция для записи данных в файл. Фунция может принимать 3 параметра, из которых первые два являются обязательными — это имя файла и строка, которая будет записана в файл. Третий необязательный параметр - флаги.

Пример использования функции:

$filename = '/tmp/example.log';
$data = 'test string';
file_put_contents($filename, $data);

В результате выполнения этого кода в файл /tmp/example.log будет записана строка "test string". Если файла не существует, то файл будет создан автоматически.

Теперь, чтобы повторные вызовы file_put_contents не удаляли содержимое файла, нужно установить 3-й параметр FILE_APPEND. После этого данные будут добавляться в конец файла: 

file_put_contents($filename, $data, FILE_APPEND);

Ещё полезным может оказаться флаг LOCK_EX. Его установка будет гарантировать то, что другие потоки не будут писать в файл в то время, пока вы пишете в файл. Поэтому для записи логов в файл рекомендую делать так:

file_put_contents($filename, $data, FILE_APPEND | LOCK_EX);

Вот так я использую file_put_contents для дебага:

file_put_contents('/tmp/debug', date('[Y-m-d H:i:s] ') . print_r($data, true) . PHP_EOL, FILE_APPEND | LOCK_EX);

 Здесь представлен пример вставки строки в файл на bash.

\n вконце –  anonymous 2 года назад
Кроме того, если использовать print_r($data, true) для формирования данных, он сам добавит переход на следующую строку. –  root 5 лет назад
 Чтобы писать с новой строки, можно добавить ко второму строковому параметру ($data в примере выше) конкатенацию с PHP_EOL, например: `file_put_contents('/tmp/filename', 'string1' . PHP_EOL, FILE_APPEND);` –  root 5 лет назад
Так оно пишется всё время в одну строчку, а как писать каждую запись с новой строки? –  anonymous 5 лет назад
Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться
    НОВЫЕ ПОЛЬЗОВАТЕЛИ