Як працювати з файлами у PHP: Повний гайд з CRUD-операцій (Створення, Читання, Оновлення, Видалення)
Під час розробки веб-додатків на PHP часто виникає потреба взаємодіяти не лише з базами даних (MySQL, PostgreSQL), а й безпосередньо з файловою системою сервера. Збереження логів, кешування даних, генерація тимчасових звітів, завантаження аватарів чи обробка конфігураційних файлів вимагають знання базових операцій із файлами.
У сучасній веб-розробці на Vanilla PHP (не фреймворках) цей процес максимально спрощений завдяки високорівневим вбудованим функціям. Розглянемо класичний цикл CRUD (Create, Read, Update, Delete) для роботи з текстовими файлами.
1. Огляд вбудованих функцій PHP для роботи з файлами
Залежно від складності завдання, PHP пропонує два основні підходи до роботи з файлами:
- Високорівневі функції (One-liner functions): Такі як
file_put_contents()таfile_get_contents(). Вони ідеально підходять для більшості повсякденних задач, оскільки самостійно відкривають, читають/записують і закривають файл за один виклик. - Низькорівневі потоки (File streams): Функції
fopen(),fread(),fwrite()таfclose(). Використовуються для роботи з великими файлами, коли потрібно контролювати буферизацію пам’яті або застосовувати паралельне блокування.
2. Порівняльна таблиця функцій файлової системи
| Операція (CRUD) | Основні функції PHP | Опис та особливості використання |
|---|---|---|
| Create (Створення) | file_put_contents(), fopen($file, 'w') |
Створює новий файл (або перезаписує існуючий) і записує туди дані. |
| Read (Читання) | file_get_contents(), readfile(), file() |
Зчитує весь вміст файлу в рядок або масив рядків. |
| Update (Оновлення) | file_put_contents(..., FILE_APPEND), fopen($file, 'a') |
Додає новий вміст у кінець існуючого файлу без його стирання. |
| Delete (Видалення) | unlink() |
Повністю видаляє файл із файлової системи сервера. |
3. Практичні приклади коду (Vanilla PHP)
Крок 1: Створення та запис у файл (Create)
Функція file_put_contents – це найпростіший спосіб створити файл і записати в нього текст:
<?php
$filename = 'log.txt';
$data = "Перший рядок логу: система запущена успішно.\n";
// Створює файл (якщо його не було) та записує дані
$result = file_put_contents($filename, $data);
if ($result !== false) {
echo "Файл успішно створено, записано байтів: $result";
} else {
echo "Помилка запису файлу.";
}
?>
Крок 2: Читання файлу (Read)
Для отримання вмісту файлу використовується file_get_contents():
<?php
$filename = 'log.txt';
if (file_exists($filename)) {
// Зчитуємо весь вміст у змінну
$content = file_get_contents($filename);
echo "<pre>" . htmlspecialchars($content) . "</pre>";
} else {
echo "Файл не знайдено.";
}
?>
Крок 3: Оновлення / Додавання даних (Update)
Щоб не затерти попередні дані, а додати нову інформацію в кінець файлу, використовуйте прапорець FILE_APPEND:
<?php $filename = 'log.txt'; $newLogEntry = "Другий рядок: користувач виконав авторизацію.\n"; // Додаємо дані в кінець файлу file_put_contents($filename, $newLogEntry, FILE_APPEND); echo "Дані успішно оновлено!"; ?>
Крок 4: Видалення файлу (Delete)
Для знищення файлу використовується функція unlink():
<?php
$filename = 'log.txt';
if (file_exists($filename)) {
if (unlink($filename)) {
echo "Файл успішно видалено.";
} else {
echo "Не вдалося видалити файл (перевірте права доступу).";
}
} else {
echo "Файлу вже немає.";
}
?>
Технічна порада розробника: Працюючи з файлами на сервері (особливо при високому навантаженні або написанні власних систем логування), завжди дбайте про безпеку та конкурентність. По-перше, перевіряйте права на запис через
is_writable(). По-друге, якщо кілька процесів одночасно пишуть у той самий файл, використовуйте низькорівневі потоки разом із блокуваннямflock($fp, LOCK_EX), щоб запобігти пошкодженню даних (race conditions).
file_put_contents та file_get_contents для швидких операцій, не забувайте перевіряти існування файлів через file_exists() і завжди контролюйте права доступу (chmod) на рівні операційної системи Linux.
Коментарі
Коментарів ще немає.
Залишити коментар на основній сторінці