Start · Sprachen · PHP · Referenz · set_include_path

set_include_path

Funktion

Setzt die PHP-Konfigurationsoption <code>include_path</code> für die Dauer des aktuellen Skripts.

seit PHP 4.3.0 Kategorie: misc

Signatur

set_include_path(string $include_path): string|false

Beschreibung

set_include_path() überschreibt den in der php.ini konfigurierten include_path für den laufenden Skript-Request. Alle nachfolgenden Aufrufe von include, require, include_once und require_once suchen Dateien entlang dieses Pfades.

Der Pfad-Trenner ist plattformabhängig: Unter Unix/Linux wird ein Doppelpunkt (:) verwendet, unter Windows ein Semikolon (;). Um plattformübergreifend portablen Code zu schreiben, empfiehlt sich die Verwendung der Konstante PATH_SEPARATOR.

Ein typischer Einsatz ist das Einbinden zusätzlicher Bibliotheks-Verzeichnisse, ohne die globale Serverkonfiguration zu ändern – etwa beim Entwickeln mit Drittanbieter-Bibliotheken oder beim Aufbau eigener Autoloading-Strukturen. Der ursprüngliche Pfad kann vorab mit get_include_path() gesichert und später mit restore_include_path() wiederhergestellt werden.

Mit dem Aufkommen von Composer und PSR-4-Autoloading wird set_include_path() heute seltener benötigt, ist aber in Legacy-Code und bei bestimmten Framework-Integrationen noch weit verbreitet.

Parameter

Name Typ Default Beschreibung
$include_path Pflicht string Der neue Wert für include_path als durch PATH_SEPARATOR (bzw. : oder ;) getrennte Liste von Verzeichnissen.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den alten include_path-Wert als String zurück, sodass er gesichert und später wiederhergestellt werden kann. Bei einem Fehler wird false zurückgegeben.

Beispiele

Bibliotheksverzeichnis zum include_path hinzufügen

<?php
// Alten Pfad sichern und neues Verzeichnis vorne anhängen
$oldPath = get_include_path();
set_include_path('/var/www/lib' . PATH_SEPARATOR . $oldPath);

// Datei aus /var/www/lib wird nun gefunden
include 'MyLibrary.php';

// Originalpfad wiederherstellen
set_include_path($oldPath);

Mehrere Verzeichnisse setzen und aktuellen Pfad ausgeben

<?php
$paths = [
    '/var/www/app/src',
    '/var/www/app/vendor',
    '/var/www/app/config',
];

$newPath = implode(PATH_SEPARATOR, $paths);
$previous = set_include_path($newPath);

echo 'Alter Pfad: ' . $previous . PHP_EOL;
echo 'Neuer Pfad: ' . get_include_path() . PHP_EOL;
Alter Pfad: .:/usr/local/lib/php Neuer Pfad: /var/www/app/src:/var/www/app/vendor:/var/www/app/config

// Wichtig · Fallstricke

Gültigkeitsbereich: Die Änderung gilt nur für den aktuellen Request bzw. das aktuelle Skript – sie hat keinen Einfluss auf andere Prozesse oder nachfolgende Requests.

Alternative: In modernen PHP-Projekten mit Composer sollte stattdessen der PSR-4-Autoloader genutzt werden. set_include_path() ist insbesondere für ältere Codebasen und PEAR-basierte Bibliotheken relevant.

Fallstrick: Wird der ursprüngliche Pfad nicht gesichert, können nachfolgende Includes fehlschlagen, wenn andere Teile des Codes auf den Standard-include_path angewiesen sind. Es empfiehlt sich daher, den Rückgabewert stets zu speichern.