Parser konfiguracji INI

Pliki INI to prosty format konfiguracyjny z sekcjami i parami klucz-wartość, historycznie używany przez Windows i wciąż powszechny w wielu aplikacjach (php.ini, my.cnf, setup.cfg). To narzędzie parsuje składnię INI, wyświetla sekcje i właściwości i może konwertować do JSON.

Specyfikacje

Typowe zastosowania

  • Inspekcja konfiguracji php.ini lub MySQL my.cnf
  • Parsowanie plików Python setup.cfg lub tox.ini
  • Przeglądanie plików konfiguracyjnych Git (.gitconfig)
  • Debugowanie ustawień aplikacji Windows
  • Konwersja starszych konfiguracji INI do JSON lub YAML

Funkcje

  • Parsowanie nagłówków [sekcji] i par klucz=wartość
  • Obsługa komentarzy (prefiksy ; i #)
  • Obsługa wartości w cudzysłowach z sekwencjami escape
  • Wyświetlanie właściwości globalnych (przed jakąkolwiek sekcją)
  • Konwersja do JSON do programowego użycia
  • Sformatowany tryb widoku
  • Wyświetlanie komentarzy per sekcja
  • Ostrzeżenia parsowania dla nieprawidłowych wpisów

Przyklady

Konfiguracja bazy danych

Wypróbuj →

Typowy plik konfiguracyjny bazy danych.

[database]
host=localhost
port=3306
name=myapp_db
user=admin

[cache]
enabled=true
ttl=3600
driver=redis

Konfiguracja PHP

Wypróbuj →

Fragment pliku php.ini.

; PHP Configuration
[PHP]
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 64M

[Date]
date.timezone = "America/New_York"

Wskazowki

  • Nazwy sekcji są niewrażliwe na wielkość liter w większości implementacji.
  • Używaj cudzysłowów wokół wartości zawierających znaki specjalne.
  • Komentarze tradycyjnie używają ; ale niektóre parsery akceptują też #.
  • Zduplikowane klucze w tej samej sekcji mogą nadpisywać lub tworzyć tablice, zależnie od parsera.

Zrozumienie Parser konfiguracji INI

Pliki INI to prosty format konfiguracyjny używający sekcji (w nawiasach kwadratowych) i par klucz-wartość. Mimo braku formalnej specyfikacji, format ten był szeroko używany od wczesnych dni MS-DOS i Windows. PHP używa php.ini, Git używa .gitconfig (styl INI), aplikacje Windows używają plików .ini i wiele starszych systemów polega na tym formacie.

Podstawowa struktura grupuje pary klucz=wartość pod nagłówkami [sekcji]. Wartości to zazwyczaj ciągi znaków, choć niektóre parsery interpretują liczby i wartości logiczne. Komentarze używają średników (;) lub symboli hash (#). Wartości wieloliniowe, zagnieżdżone sekcje i sekwencje escape różnią się między implementacjami, ponieważ nie ma autorytatywnego standardu.

Pliki INI wypełniają lukę między płaskimi formatami klucz-wartość (jak pliki .env) a formatami strukturalnymi (jak TOML i YAML). Zapewniają organizację na poziomie sekcji bez złożoności zagnieżdżonych struktur danych. Dla prostej konfiguracji aplikacji z logicznym grupowaniem, INI pozostaje praktycznym wyborem.

Brak standaryzacji to główna słabość INI. Różne parsery nie zgadzają się co do znaków komentarza, czy klucze rozróżniają wielkość liter, jak obsługiwać zduplikowane klucze i sekcje oraz czy wartości mogą obejmować wiele linii. Rozpoczynając nowy projekt, TOML jest generalnie lepszym wyborem, ponieważ zapewnia tę samą organizację opartą na sekcjach z formalną specyfikacją i bogatszymi typami danych.

TOML został zaprojektowany jako nowoczesny zamiennik INI z formalną specyfikacją. Dodaje natywne typy danych (liczby całkowite, zmiennoprzecinkowe, wartości logiczne, daty, tablice), zagnieżdżone tabele, tablice tabel i ciągi wieloliniowe — funkcje, których INI całkowicie brakuje. Dla nowych projektów TOML jest lepszym wyborem; INI jest głównie istotny dla kompatybilności wstecznej z istniejącymi plikami konfiguracyjnymi.

Wrażliwość na wielkość liter kluczy różni się w zależności od implementacji. Funkcje INI Windows nie rozróżniają wielkości liter, configparser Pythona domyślnie nie rozróżnia wielkości liter dla kluczy, parse_ini_file PHP rozróżnia wielkość liter dla kluczy, ale nie dla sekcji, a konfiguracja Git nie rozróżnia wielkości liter zarówno dla sekcji, jak i nazw kluczy. Zawsze sprawdzaj dokumentację swojego konkretnego parsera. Obsługa znaków specjalnych w wartościach jest podobnie niespójna — niektóre parsery obsługują cytowanie wartości podwójnymi cudzysłowami, niektóre obsługują sekwencje escape, a niektóre traktują wszystko po znaku równości jako wartość dosłowną. Gdy potrzebne są znaki specjalne, zweryfikuj zachowanie swojego konkretnego parsera lub rozważ migrację do TOML.

← Powrot do wszystkich narzedzi