de.comp.lang.php.* FAQ

4.2. Wo finde ich die php.ini?

Antwort von Johannes Frömter

Die Ausgabe von phpinfo() sagt unter anderem, wo PHP seine Konfigurationsdatei php.ini sucht. Steht hier nur php.ini, hat PHP keine Datei gefunden und arbeitet mit Default-Einstellungen (diese entsprechen etwa denen aus der php.ini-dist); weniger irreführend ist die Ausgabe von echo get_cfg_var('cfg_file_path'), sie ist in diesem Fall einfach leer.

Bei der Kompilierung von PHP kann mit der Direktive --with-config-file-path=/dir ein Verzeichnis definiert werden; default-mäßig erwartet PHP die php.ini unter Unix in /usr/local/lib und unter Windows im Windows-Verzeichnis. Dorthin kopiert man die mitgelieferte php.ini-dist und benennt sie in php.ini um.

Ab der Version 4.3.0 kann bei der Kompilierung von PHP mit der Direktive --with-config-file-scan-dir=PATH ein zusätzliches Verzeichnis definiert werden, in dem zusätzliche php.ini Dateien liegen können. Wurde PHP mit dieser Option kompiliert und liegen php.ini Dateien in diesem Verzeichnis, haben die Einstellungen Vorrang gegenüber der vorher gefundenen php.ini.

Neben der php.ini und den .htaccess-Dateien gibt es unter Windows auch die Möglichkeit, in der Registry PHP-Konfigurations-Einstellungen vorzunehmen - ob dies der Übersichtlichkeit dienlich ist, sei dahingestellt... Die Einstellungen wirken sich als 'local value' (siehe phpinfo() ) auf bestimmte Verzeichnisse sowie deren Unterverzeichnisse aus.

  1. Regedit öffnen

  2. Den Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE öffnen

  3. Den Schlüssel PHP anlegen

  4. Den Schlüssel Per Directory Values anlegen

  5. Einen Schlüssel für das Laufwerk anlegen, in dem sich das Document Root befindet, z.B. C oder D (ohne ':\'!)

  6. Einen Schlüssel für das Document-Root-Verzeichnis anlegen, z.B. 'www'

  7. (Für jedes Unterverzeichnis einen weiteren Unterschlüssel anlegen, z.B. 'php')

  8. Einen neuen "Zeichenfolgenwert" anlegen, z.B 'auto_prepend_file'

  9. Dem neuen Eintrag einen Wert zuweisen, z.B. 'prepend.php'

Der vollständige Schlüssel aus obigem Beispiel sollte nun so aussehen: HKEY_LOCAL_MACHINE\SOFTWARE\PHP\Per Directory Values\C\www\php -> auto_prepend_file = 'prepend.php'. Anmerkung: Egal ob der Eintrag ein bool'scher Wert, Integer oder String ist, der Schlüssel muss immer vom Typ "Zeichenfolgenwert" (engl. "string") sein.

Valid HTML 4.01! Valid CSS!

4.2. Wo finde ich die php.ini?
http://www.php-faq.de/q/q-php-ini.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team