Для создания INI-файла в PHP используйте функцию file_put_contents(), формируя содержимое как строку. Простой способ — записать параметры в формате ключ = значение, разделённые переносом строки. Для создания сложных файлов с секциями удобнее использовать массивы и записывать их строками.
<?php $iniContent = "; Настройки приложения\n"; $iniContent .= "[app]\n"; $iniContent .= "app_name = \"My Application\"\n"; $iniContent .= "version = 1.0\n\n"; $iniContent .= "[database]\n"; $iniContent .= "host = localhost\n"; $iniContent .= "port = 3306\n"; $iniContent .= "user = root\n"; $iniContent .= "pass = \n"; // Создаем файл и записываем содержимое file_put_contents('config.ini', $iniContent); echo "Файл config.ini успешно создан."; ?>
Перейдем по адресу http://localhost/create_ini_file_content.php в браузере
Проверим в корневой директиве
Для чтения имен секций из .ini файла в PHP используется функция parse_ini_file() с установленным параметром process_sections, установленным в true.
<?php // Прочитать ini файл $config = parse_ini_file('config.ini', true); // true - сохранить секции echo "My Application: " . $config['app']['app_name'] . "<br>"; // Выведет: app_name echo "Version Application: " . $config['app']['version'] . "<br>"; // Выведет: 1.0 echo "database: " . $config['database']['host'] . "<br>"; // Выведет: localhost echo "port: " . $config['database']['port'] . "<br>"; // Выведет: 3306 echo "user: " . $config['database']['user'] . "<br>"; // Выведет: root echo "password: " . $config['database']['pass'] . "<br>"; // Выведет: пустое место ?>
Перейдем по адресу http://localhost/read_ini_file.php в браузере
Запись и обновление INI-файлов в PHP чаще всего реализуется через полное чтение файла, изменение массива данных и последующую перезапись всего файла. В PHP нет встроенной функции для обновления конкретной строки, поэтому используется метод «чтение-изменение-запись» или создание собственной функции для генерации INI-структуры.
Для работы с INI-файлами рекомендуется использовать функцию parse_ini_file для чтения и ассоциативный массив для хранения настроек.
Чтобы создать новый INI-файл с нуля, можно использовать тот же подход, записав массив данных функцией file_put_contents.
<?php $ini_file = 'config.ini'; // 1. ЧТЕНИЕ ДАННЫХ if (file_exists($ini_file)) { // parse_ini_file превращает ini в массив $config = parse_ini_file($ini_file, true); } else { die("Файл конфигурации не найден."); } // Получаем значения по умолчанию или уже существующие $appName = $config['app']['app_name'] ?? ''; $appVersion = $config['app']['app_version'] ?? ''; $enableUpdate = $config['settings']['enable_update'] ?? ''; // 2. СОХРАНЕНИЕ ДАННЫХ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Получаем данные из формы $newAppName = $_POST['app_name']; $newVersion = $_POST['app_version']; $newUpdate = isset($_POST['enable_update']) ? 'true' : 'false'; // Формируем новую строку для записи $newContent = "; Настройки приложения\n"; $newContent .= "[app]\n"; $newContent .= "app_name = \"$newAppName\"\n"; $newContent .= "version = $newVersion\n"; $newContent .= "\n"; $newContent .= "[settings]\n"; $newContent .= "enable_update = $newUpdate\n"; $newContent .= "\n"; $newContent .= "; Настройки базы данных\n"; $newContent .= "[database]\n"; $newContent .= "host = localhost\n"; $newContent .= "port = 3306\n"; $newContent .= "db = test_setting\n"; $newContent .= "user = root\n"; $newContent .= "pass = \n"; // Записываем обратно в файл file_put_contents($ini_file, $newContent); // Перезагружаем страницу, чтобы увидеть новые данные header("Location: " . $_SERVER['PHP_SELF']); exit; } ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Настройки INI</title> </head> <body> <h2>Редактировать настройки</h2> <form method="POST"> <label>Название ПО:</label><br> <input type="text" name="app_name" value="<?php echo htmlspecialchars($appName); ?>"><br><br> <label>Номер версии ПО:</label><br> <input type="number" step="any" name="app_version" value="<?php echo htmlspecialchars($appVersion); ?>"><br><br> <label> <input type="checkbox" name="enable_update" <?php if ($enableUpdate == '1' || $enableUpdate == 'true') echo 'checked'; ?>> Включить обновления </label><br><br> <input type="submit" value="Сохранить"> </form> </body> </html>
Перейдем по адресу http://localhost/edit_ini_file_content.php в браузере и заполним тестовыми данными
Проверим наж ini файл