INI-JSONkonverter

Wissen · 10 Min. Lesezeit

php.ini verstehen und nach JSON konvertieren: Aufbau und wichtige Einstellungen

Die php.ini verständlich erklärt: Aufbau, Direktiven, Sektionen und die wichtigsten Einstellungen wie memory_limit, upload_max_filesize und display_errors. Plus, wie du die php.ini sicher nach JSON lesbar machst, ohne sensible Werte preiszugeben.

Eike-Christian Ramcke
Eike-Christian Ramcke Veröffentlicht Geprüft

Kurz gesagt

Die php.ini ist die zentrale Konfigurationsdatei des PHP-Interpreters. Sie ist im INI-Format aufgebaut, also aus Sektionen in eckigen Klammern und Direktiven der Form name = wert, ergänzt um Kommentare mit Semikolon. Über sie steuerst du, wie viel Speicher Skripte nutzen dürfen, wie groß Uploads sein können, ob Fehler angezeigt werden und welche Erweiterungen geladen sind. Wer die php.ini als JSON betrachtet, kann sie leichter vergleichen und dokumentieren. Wichtig dabei: Eine php.ini kann sensible Hinweise enthalten, deshalb sollte die Umwandlung lokal laufen. Genau das macht der INI-zu-JSON-Konverter ohne Upload.

Was die php.ini ist und wofür sie da ist

Die php.ini ist die Hauptkonfigurationsdatei von PHP. Beim Start liest der Interpreter sie ein und richtet sein Verhalten danach aus. Praktisch jede Eigenschaft, die nicht im Code festgelegt wird, lässt sich hier zentral einstellen: Speichergrenzen, Laufzeit-Limits, Fehlerbehandlung, Zeitzone, Upload-Größen, geladene Erweiterungen und vieles mehr.

Der Name verrät bereits das Format: Es ist eine INI-Datei, also ein schlichtes, gut lesbares Textformat. Damit reiht sich die php.ini in eine lange Tradition ein, denn das INI-Format wird seit Jahrzehnten für Konfiguration genutzt, von Windows über Spiele bis zu Servern. Was eine INI-Datei grundsätzlich ausmacht, erklärt der Ratgeber Was ist eine INI-Datei im Detail. Hier konzentrieren wir uns auf den speziellen Fall PHP.

Wichtig zu verstehen: Die php.ini legt Standardwerte fest, ist aber nicht der einzige Ort der Konfiguration. Einzelne Werte lassen sich zusätzlich über zusätzliche .ini-Dateien, über die Webserver-Konfiguration oder zur Laufzeit per ini_set() im Code überschreiben. Was am Ende wirklich gilt, ist also die Summe aller dieser Quellen, nicht nur der Dateiinhalt.

Wo die php.ini liegt und welche gilt

Eine häufige Frustration ist, dass Änderungen an einer php.ini scheinbar wirkungslos bleiben. Der Grund ist fast immer, dass man die falsche Datei bearbeitet hat. Denn welche php.ini geladen wird, hängt vom Betriebssystem, von der PHP-Installation und sogar von der genutzten Schnittstelle ab. Die php.ini für die Kommandozeile (CLI) kann eine andere sein als die für den Webserver.

Verlasse dich daher nie auf einen vermuteten Pfad, sondern frage PHP direkt. Es gibt drei zuverlässige Wege:

  • phpinfo() in einem Skript ausführen und unter Loaded Configuration File nachsehen. Das zeigt den exakten Pfad der aktiven Datei.
  • php_ini_loaded_file() im Code aufrufen, das gibt denselben Pfad als Zeichenkette zurück.
  • Auf der Kommandozeile php --ini ausführen. Es listet die geladene Hauptdatei und alle zusätzlich eingebundenen .ini-Dateien auf.

Erst wenn du den richtigen Pfad kennst, lohnt sich das Bearbeiten. Nach jeder Änderung an der für den Webserver geladenen php.ini muss in der Regel der zugehörige Dienst neu gestartet werden, damit die neuen Werte greifen.

Aufbau: Sektionen, Direktiven und Kommentare

Die php.ini folgt dem klassischen INI-Aufbau. Ein typischer Ausschnitt sieht so aus:

; Dies ist ein Kommentar

[PHP]
; Maximaler Speicher pro Skript
memory_limit = 256M
max_execution_time = 30
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED

[Date]
date.timezone = "Europe/Berlin"

[Session]
session.save_handler = files
session.gc_maxlifetime = 1440

Daraus lassen sich die Bausteine ablesen:

  • Sektionen wie [PHP], [Date] oder [Session] gruppieren zusammengehörige Einstellungen. In der php.ini dienen sie vor allem der Übersicht.
  • Direktiven sind die eigentlichen Einstellungen in der Form name = wert. Viele Direktivennamen enthalten einen Punkt, etwa date.timezone oder session.save_handler. Dieser Punkt ist hier Teil des Namens und nicht, wie bei manchen Tools, eine Verschachtelung.
  • Kommentare beginnen mit einem Semikolon und werden ignoriert. In der php.ini sind sie häufig, weil sie jede Option erklären.

Eine Besonderheit ist erwähnenswert: Anders als bei vielen anderen INI-Dialekten ist das Doppelkreuz # in der php.ini kein Kommentarzeichen. Hier gilt ausschließlich das Semikolon. Solche Unterschiede zwischen INI-Varianten sind kein Zufall, sondern der Normalfall. Mehr dazu im Ratgeber INI ist nicht gleich INI.

Werttypen und ihre Tücken

Die php.ini erlaubt einige Schreibweisen, die man kennen sollte, weil sie beim Lesen und beim Umwandeln nach JSON gern für Verwirrung sorgen.

Ein- und Ausschalten

Boolesche Direktiven akzeptieren mehrere Schreibweisen für denselben Zustand: On, True, Yes und 1 bedeuten alle eingeschaltet, Off, False, No, None und 0 bedeuten ausgeschaltet. Beim Parsen im Standardmodus wandelt PHP diese Werte um, was zu Strings wie "1" oder leeren Werten führt. Wer das Original behalten will, muss bewusst den RAW-Modus wählen.

Größenangaben mit Suffix

Speichergrößen werden mit den Kürzeln K, M und G angegeben, etwa 256M für 256 Megabyte. Diese Werte sind für PHP Strings mit besonderer Bedeutung, keine Zahlen. Im JSON erscheinen sie deshalb als "256M", was korrekt ist und auch so bleiben sollte.

Konstanten und Ausdrücke

Bei error_reporting stehen oft Ausdrücke wie E_ALL & ~E_DEPRECATED. Das sind benannte Konstanten, die mit bitweisen Operatoren verknüpft werden. Beim Lesen im Standardmodus löst PHP sie zu einer Zahl auf, im RAW-Modus bleibt der lesbare Ausdruck erhalten. Welche Variante du brauchst, entscheidet der Zweck: Eine Zahl ist maschinell auswertbar, der Ausdruck ist für Menschen verständlicher.

Die wichtigsten Direktiven im Überblick

Die php.ini enthält hunderte Direktiven, aber nur eine Handvoll braucht man im Alltag wirklich. Diese Tabelle fasst die häufigsten zusammen, samt typischer Werte und was sie bewirken:

Direktive Beispielwert Bedeutung
memory_limit 256M Maximaler Arbeitsspeicher pro Skript
max_execution_time 30 Maximale Laufzeit eines Skripts in Sekunden
upload_max_filesize 8M Maximale Größe einer hochgeladenen Datei
post_max_size 8M Maximale Größe aller POST-Daten zusammen
display_errors Off Ob Fehler im Browser angezeigt werden
error_reporting E_ALL Welche Fehlerstufen gemeldet werden
date.timezone Europe/Berlin Standard-Zeitzone für Datumsfunktionen
expose_php Off Ob PHP seine Version im HTTP-Header verrät

Ein Detail, das oft übersehen wird: upload_max_filesize und post_max_size hängen zusammen. Damit ein Upload von 8 Megabyte funktioniert, muss post_max_size mindestens so groß, in der Praxis etwas größer sein, weil die Formulardaten und der Overhead zusätzlich Platz brauchen. Wer nur eine der beiden Direktiven erhöht, wundert sich über fehlschlagende Uploads.

development gegen production

PHP liefert zwei fertige Vorlagen mit, deren Namen schon den Zweck verraten: php.ini-development und php.ini-production. Sie unterscheiden sich in einigen sicherheits- und komfortrelevanten Direktiven.

Die development-Variante ist auf das Programmieren ausgelegt. Sie zeigt Fehler direkt im Browser an (display_errors = On), meldet möglichst viele Hinweise und macht damit das Aufspüren von Problemen einfach. Auf einem öffentlichen Server wäre das aber gefährlich, weil Fehlermeldungen interne Pfade, Datenbankdetails oder Hinweise auf Schwachstellen preisgeben können.

Die production-Variante dreht das um. Sie blendet Fehler im Browser aus (display_errors = Off) und schreibt sie stattdessen in ein Log (log_errors = On). So sieht der Besucher im Fehlerfall nur eine neutrale Seite, während die Details geschützt im Protokoll landen. Für jeden öffentlich erreichbaren Server ist die Production-Vorlage der richtige Ausgangspunkt.

php.ini nach JSON lesbar machen

Warum überhaupt JSON? Die php.ini ist mit ihren vielen Kommentaren und Sektionen umfangreich. Als verschachteltes JSON-Objekt wird sie maschinell auswertbar, lässt sich leichter zwischen zwei Servern vergleichen, in ein Monitoring einspeisen oder in einem Ticket strukturiert darstellen. Es gibt zwei sinnvolle Wege.

Schnell und ohne Code: im Browser

  1. Öffne eine Kopie deiner php.ini in einem Texteditor und kopiere den Inhalt. Arbeite bewusst mit einer Kopie, nicht mit der Originaldatei.
  2. Füge den Text in das Eingabefeld des INI-zu-JSON-Konverters ein.
  3. Lass die Typ-Heuristik je nach Bedarf an oder aus. Für die php.ini ist es oft sinnvoll, sie auszuschalten, damit Werte wie 256M oder Konstanten unverändert als String bleiben.
  4. Kopiere das fertige JSON oder lade es herunter. Die Datei verlässt deinen Browser dabei nicht.

Programmgesteuert: mit PHP

Im Code liest du die Datei mit parse_ini_file($pfad, true, INI_SCANNER_RAW) ein und gibst sie mit json_encode aus. Den RAW-Modus wählst du hier bewusst, damit On, Off und Konstanten erhalten bleiben. Willst du dagegen die tatsächlich aktiven Laufzeitwerte statt des Dateiinhalts, nimmst du ini_get_all(). Den vollständigen Ablauf mit fertigem Code zeigt der Ratgeber INI in JSON mit PHP umwandeln.

Sicherheit und sensible Werte

Die php.ini wirkt harmlos, kann aber verwertbare Informationen enthalten. Wer sie unbedacht teilt, etwa als JSON in einem öffentlichen Forum oder einem Support-Ticket, gibt mehr preis, als ihm lieb ist. Drei Punkte sind besonders wichtig.

Pfade verraten Struktur. Direktiven wie session.save_path, error_log oder extension_dir zeigen die Verzeichnisstruktur des Servers. Das ist für Angreifer ein nützlicher Anhaltspunkt. Vor dem Teilen solltest du solche Pfade entfernen oder durch Platzhalter ersetzen.

Erweiterungen und Zugangsdaten. Manche Erweiterungen legen Verbindungsdetails oder Standardzugänge in der php.ini ab. Prüfe deshalb jede Zeile, bevor du die Datei weitergibst.

Die Umwandlung selbst. Wenn du die php.ini nach JSON konvertierst, sollte das lokal geschehen, ohne dass die Datei auf einen fremden Server hochgeladen wird. Genau hier liegt der Vorteil eines client-side Tools: Die Verarbeitung läuft komplett im Browser, es gibt keinen Upload. Warum das gerade bei Konfigurationsdateien mit Geheimnissen entscheidend ist, vertieft der Ratgeber INI und JSON sicher umwandeln.

php.ini als JSON betrachten

Füge eine Kopie deiner php.ini ein und sieh die Direktiven als übersichtliches JSON. Lokal im Browser, ohne Upload, ohne Anmeldung.

Zum INI-zu-JSON-Konverter

Häufige Fragen

Wo finde ich die php.ini?

Am schnellsten über phpinfo() unter Loaded Configuration File, über php_ini_loaded_file() im Code oder mit php --ini auf der Kommandozeile. Der Pfad unterscheidet sich je nach System, verlasse dich nie auf eine feste Annahme.

Was ist der Unterschied zwischen development und production?

Die development-Vorlage zeigt Fehler an und ist gesprächig, ideal zum Programmieren. Die production-Vorlage blendet Fehler aus und protokolliert sie, was auf öffentlichen Servern Pflicht ist.

Wie wandle ich die php.ini in JSON um?

Füge eine Kopie in einen INI-zu-JSON-Konverter ein und du erhältst die Direktiven als verschachteltes JSON. Für eine lokale Umwandlung ohne Upload eignet sich ein Browser-Tool, im Code nutzt du parse_ini_file im RAW-Modus oder ini_get_all().

Welche Einstellungen sind sicherheitsrelevant?

Unter anderem display_errors (live auf Off), expose_php (auf Off), allow_url_fopen, allow_url_include und disable_functions. Auch die Upload- und Speichergrenzen wirken auf Stabilität und Missbrauchsrisiko.

Darf ich die php.ini öffentlich teilen?

Nur mit Vorsicht. Sie kann Pfade, Speicherorte und Zugangsdetails enthalten. Entferne sensible Werte, bevor du sie weitergibst, und wandle sie lokal um, damit die Datei dein Gerät nicht verlässt.

Weiterführende Artikel

Quellen und Methodik

Grundlage ist das offizielle PHP-Handbuch zur Laufzeitkonfiguration, zur Liste der php.ini-Direktiven sowie zu den Funktionen parse_ini_file, ini_get_all, php_ini_loaded_file und phpinfo (php.net). Die genannten Beispielwerte sind typische Vorgaben aus den mitgelieferten Vorlagen php.ini-development und php.ini-production und können je nach Version und Distribution abweichen. Zuletzt geprüft am 25.06.2026.

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige