(PHP 5, PHP 7, PHP 8)
file_put_contents — Записывает данные в файл
Функция работает так же, как последовательный вызов функций fopen(), fwrite() и fclose() для записи данных в файл.
Если путь filename
не существует, функция создаст файл. В противном случае она перезапишет существующий файл, если не установлен флаг FILE_APPEND
.
filename
Путь к файлу, в который функция будет записывать данные.
data
Записываемые данные. Разрешено передавать строку (string), массив (array) или ресурс потока.
Если данные data
— ресурс потока (stream), функция скопирует оставшийся буфер потока в файл. Это похоже на работу функции stream_copy_to_stream().
Допустимо определять параметр data
как одномерный массив. Это будет эквивалентно вызову file_put_contents($filename, implode('', $array))
.
flags
В параметр flags
разрешено передавать произвольные комбинации следующих флагов, соединяя их бинарным оператором ИЛИ (|
).
Флаг | Описание |
---|---|
FILE_USE_INCLUDE_PATH | Ищет файл filename во включённых каталогах. Параграф include_path даёт дополнительную информацию. |
FILE_APPEND | Функция допишет данные в конец файла вместо того, чтобы перезаписать его, если файл filename уже существует. |
LOCK_EX | Получает эксклюзивную блокировку файла на время записи. Другими словами, между вызовами функций fopen() и fwrite() произойдёт вызов функции flock(). Это не тождественно вызову функции fopen() с флагом «x». |
context
Допустимый ресурс контекста, который создан функцией stream_context_create().
Функция возвращает количество байтов, которые процесс записал в файл, или false
в случае ошибки.
Функция возвращает как логическое значение false
, так и нелогическое значение, которое приводится к false
. Прочитайте раздел «Логический тип», чтобы получить дополнительную информацию. Используйте оператор === для проверки значения, которое возвращает функция.
Пример #1 Пример простого использования
<?php
$file = 'people.txt';
// Открываем файл, чтобы получить существующее содержимое
$current = file_get_contents($file);
// Добавляем нового человека в файл
$current .= "Джон Смит\n";
// Записываем содержимое обратно в файл
file_put_contents($file, $current);
?>
Пример #2 Использование флагов
<?php
$file = 'people.txt';
// Новый человек, которого нужно добавить в файл
$person = "Джон Смит\n";
// Записываем содержимое в файл
// с флагом FILE_APPEND, чтобы дописать содержимое в конец файла,
// и флагом LOCK_EX, чтобы никто другой не мог записывать данные в файл в то же самое время
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
?>
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
В эту функцию в качестве имени файла можно передавать URL-адреса, если была включена директива fopen wrappers. Подробнее о том, как указать имя файла, рассказано в описании функции fopen(). В разделе «Поддерживаемые протоколы и обёртки» также даны ссылки на информацию о способностях поддерживаемых обёрток, замечания по работе с ними и список предопределённых переменных, которые они дают.