Валідатор INI
Перевіряйте файли конфігурації INI, як-от php.ini, my.cnf, файли записів робочого столу або налаштувань інструментів, перш ніж через них служба відмовить у запуску. Валідатор читає кожен рядок, приймає секції, пари ключ-значення, коментарі та значення в лапках, а також повідомляє про рядки, які не може розпізнати, незакриті заголовки секцій, порожні ключі й незакриті лапки. Він також позначає повторювані ключі й секції та перелічує всі секції з їхніми ключами, щоб ви могли одразу переглянути структуру.
Поширені запитання
За якими правилами файл INI вважається дійсним?
Кожен непорожній рядок має бути заголовком секції, наприклад [database], парою ключ-значення, наприклад host = localhost, або коментарем. Рядок, який не відповідає жодному з цих варіантів, незакритий заголовок секції, порожній ключ або незакрите значення в лапках вважаються помилками. Через помилки файл позначається як недійсний; у списку помилок указано номери відповідних рядків.
В INI немає єдиного стандарту. Які правила використовує валідатор?
Валідатор дотримується поширеного діалекту, який використовують PHP, MySQL і багато інших інструментів: ключі та значення розділяються символом = або символом :, якщо = немає; коментарі починаються з ; або #, а символ ; або # після пробілу в значенні без лапок починає вбудований коментар. Назви секцій можуть містити пробіли, крапки й лапки, як у секціях стилю Git. Типи значень не перевіряються, оскільки в INI немає типів даних.
Що відбувається з повторюваними ключами?
Якщо ключ визначено двічі в одній секції, з’являється попередження із зазначенням рядка другого визначення. Більшість парсерів INI залишають останнє значення, тож попереднє мовчки ігнорується. Файл однаково позначається як дійсний.
Що відбувається з повторюваними секціями?
Якщо заголовок секції з’являється повторно, про це повідомляється як про попередження, а її ключі об’єднуються з ключами першого входження. Деякі програми по-різному обробляють повторювані секції, тому зазвичай найкраще об’єднати їх.
Чи підтримуються ключі масивів, як-от extension[]?
Так. Ключі, що закінчуються на [], збирають свої значення в список, як у файлах конфігурації PHP, і їх повторення не позначається як дублювання. У переліку секцій такий ключ показується один раз.
Що таке глобальні ключі?
Ключі, розташовані перед першим заголовком секції, не належать до жодної секції. У результаті вони відображаються як глобальні ключі, і багато інструментів трактують їх як типові значення або параметри верхнього рівня.
Як обробляються значення в лапках?
Значення в подвійних лапках можуть містити ;, # і = та підтримують escape-послідовності \", \\, \n і \t, тоді як значення в одинарних лапках сприймаються буквально. Якщо значення в лапках не закрито в тому самому рядку, це помилка. У значень без лапок обрізаються пробіли на початку й у кінці.
Яку частину структури буде показано?
У результаті перелічено кожну секцію з кількістю ключів і назвами ключів — до 200 секцій і 50 ключів у кожній, — а також загальну кількість секцій і ключів. Показуються до 20 помилок і 20 попереджень із кількістю решти.
Чи розпізнаються вкладені секції, як-от [a.b]?
Назви секцій зберігаються саме так, як їх записано, тому [a.b] — це секція з назвою a.b, а не підсекція a. Те, чи трактує програма крапки як вкладеність, залежить від цієї програми. Валідатор лише перевіряє, що назва непорожня, а заголовок закрито.
Яким може бути розмір файлу і чи можна його конвертувати?
Розмір вхідного файлу може становити до 5 MiB. Щоб перетворити дійсний файл INI на JSON, YAML, TOML або інший формат, скористайтеся Конвертером форматів даних, який перетворює секції на об’єкти.