Signatur
Beschreibung
parse_ini_file() liest eine INI-Datei im klassischen Windows-INI-Format und wandelt deren Schlüssel-Wert-Paare in ein assoziatives PHP-Array um. Das Ergebnis kann direkt für Konfigurationszwecke genutzt werden, ohne dass eine eigene Parser-Logik geschrieben werden muss.
Mit dem Parameter $process_sections lässt sich steuern, ob die in eckigen Klammern definierten Abschnitte ([section]) als verschachtelte Arrays übernommen werden sollen. Ist er true, enthält das Rückgabe-Array für jeden Abschnitt einen eigenen Unterschlüssel mit den zugehörigen Einträgen.
Der Parameter $scanner_mode beeinflusst, wie Werte interpretiert werden. Mit INI_SCANNER_TYPED werden boolesche, null und numerische Werte automatisch in den passenden PHP-Typ konvertiert. INI_SCANNER_RAW liefert alle Werte als rohe Zeichenketten, ohne jede Interpretation.
Die Funktion ist besonders nützlich für einfache Anwendungskonfigurationen, bei denen ein schlankes Format ohne XML- oder YAML-Overhead bevorzugt wird. Sie sollte jedoch nicht zum Parsen der PHP-eigenen php.ini verwendet werden – dafür gibt es ini_get().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur INI-Datei, die eingelesen werden soll. Kann absolut oder relativ zum aktuellen Arbeitsverzeichnis angegeben werden. | |
| $process_sections | bool | false | Ist dieser Wert true, werden Abschnitte ([section]) als verschachtelte Arrays im Ergebnis-Array abgebildet. Standardmäßig werden alle Schlüssel ohne Abschnittsunterscheidung flach zurückgegeben. |
| $scanner_mode | int | INI_SCANNER_NORMAL | Steuert die Interpretationsweise der Werte. Mögliche Konstanten: INI_SCANNER_NORMAL (Standard), INI_SCANNER_RAW (keine Typinterpretation), INI_SCANNER_TYPED (automatische PHP-Typkonvertierung). |
Rückgabewert
false zurückgegeben.Beispiele
Einfache INI-Datei ohne Abschnitte einlesen
<?php
// Inhalt von config.ini:
// app_name = "MeineApp"
// version = 2
// debug = false
$config = parse_ini_file('config.ini');
if ($config === false) {
die('Konfigurationsdatei konnte nicht geladen werden.');
}
echo $config['app_name']; // MeineApp
echo $config['version']; // 2
echo $config['debug']; // '' (leerer String bei false mit NORMAL-Modus)
INI-Datei mit Abschnitten und typisiertem Scanner
<?php
// Inhalt von app.ini:
// [database]
// host = localhost
// port = 3306
// enabled = true
//
// [mail]
// smtp = mail.example.com
// port = 587
$config = parse_ini_file('app.ini', true, INI_SCANNER_TYPED);
if ($config === false) {
die('Fehler beim Laden der Konfiguration.');
}
var_dump($config['database']['port']); // int(3306)
var_dump($config['database']['enabled']); // bool(true)
echo $config['mail']['smtp']; // mail.example.com
// Wichtig · Fallstricke
Sicherheitshinweis: INI-Dateien sollten niemals in einem öffentlich zugänglichen Webverzeichnis gespeichert werden. Legen Sie Konfigurationsdateien außerhalb des Document-Root ab oder sichern Sie sie per .htaccess-Regel (deny from all), um unbefugten Zugriff zu verhindern.
Reservierte Wörter: Schlüssel wie null, yes, no, true, false, on, off, none haben im INI_SCANNER_NORMAL-Modus eine besondere Bedeutung und werden automatisch konvertiert. Um rohe Zeichenketten zu erhalten, sollten Werte in Anführungszeichen gesetzt oder INI_SCANNER_RAW verwendet werden.
Zeichenkodierung: Die Funktion unterstützt kein natives UTF-8-BOM. Dateien mit BOM können zu unerwarteten Ergebnissen beim ersten Schlüssel führen; BOM sollte daher beim Speichern der INI-Datei vermieden werden.