Start · Sprachen · PHP · Referenz · restore_include_path

restore_include_path

Funktion

Stellt den ursprünglichen Wert der <code>include_path</code>-Konfigurationsoption wieder her, der beim Skript-Start gültig war.

seit PHP 4.3.0 Kategorie: misc

Signatur

restore_include_path(): void

Beschreibung

restore_include_path() setzt den include_path auf den Wert zurück, der in der php.ini (oder einer äquivalenten Serverkonfiguration) definiert ist. Dies ist nützlich, wenn der include_path innerhalb eines Skripts oder einer Funktion temporär mit set_include_path() geändert wurde und anschließend der ursprüngliche Zustand wiederhergestellt werden soll.

Die Funktion entspricht dem Aufruf ini_restore('include_path') und ist lediglich ein praktischer Alias für diesen häufig benötigten Anwendungsfall. Sie wirkt ausschließlich für die Dauer des aktuellen Skripts – ein dauerhaftes Zurücksetzen in der php.ini ist damit nicht möglich.

Typische Einsatzszenarien sind Bibliotheken oder Plugins, die den include_path für eigene Zwecke erweitern und nach ihrer Initialisierung den vorherigen Zustand wiederherstellen möchten, um unerwartete Nebenwirkungen auf das restliche Skript zu vermeiden.

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

Beispiele

Temporäre Änderung des include_path mit anschließender Wiederherstellung

<?php
// Aktuellen include_path speichern und ausgeben
$original = get_include_path();
echo 'Original: ' . $original . PHP_EOL;

// include_path temporär erweitern
set_include_path('/tmp/mylibs' . PATH_SEPARATOR . $original);
echo 'Geändert: ' . get_include_path() . PHP_EOL;

// Eigene Includes hier ausführen ...
// require 'mylib.php';

// include_path wiederherstellen
restore_include_path();
echo 'Wiederhergestellt: ' . get_include_path() . PHP_EOL;
?>
Original: .:/usr/share/php Geändert: /tmp/mylibs:.:/usr/share/php Wiederhergestellt: .:/usr/share/php

Verwendung in einer Bibliotheks-Initialisierungsfunktion

<?php
function loadLibrary(string $libPath): void
{
    // Bibliothekspfad temporär hinzufügen
    set_include_path($libPath . PATH_SEPARATOR . get_include_path());

    // Bibliotheksdateien laden
    require_once 'bootstrap.php';

    // include_path sofort wieder zurücksetzen
    restore_include_path();
}

loadLibrary('/var/www/vendor/myframework');

// Ab hier gilt wieder der ursprüngliche include_path
echo get_include_path() . PHP_EOL;
?>
.:/usr/share/php

// Wichtig · Fallstricke

Deprecation-Hinweis: Ab PHP 8.4 ist restore_include_path() als veraltet markiert. Es wird empfohlen, stattdessen ini_restore('include_path') zu verwenden, das denselben Effekt erzielt und klarer macht, dass es sich um eine allgemeine INI-Wiederherstellung handelt.

Beachte, dass die Funktion den Wert auf den Stand der php.ini zurücksetzt, nicht auf einen zuvor mit get_include_path() gespeicherten Wert. Wenn du mehrere verschachtelte Änderungen rückgängig machen möchtest, speichere den Pfad manuell und verwende set_include_path() mit dem gespeicherten Wert.