file_put_contents
(PHP 5, PHP 7, PHP 8)
file_put_contents — Записывает данные в файл
Описание
Если путь 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().
В разделе «Поддерживаемые протоколы и обёртки» также даны ссылки на информацию о способностях поддерживаемых обёрток,
замечания по работе с ними и список
предопределённых переменных, которые они дают.