[PHP] Der include path
Oft liest man, dass man bestimmte Verzeichnisse in den sog. include path aufnehmen soll oder im include path irgendwelche scripts ablegen soll und das meist ohne weitere Erklärung. Der Include Path und das Administrieren des Selbigen gehört also mehr oder weniger zu den Grundkenntnissen. Dennoch ist es für viele ein Mysterium.
Da ich gestern ein wenig damit gearbeitet habe, dachte ich, ich blogge mal ein wenig drüber. Warum? Weil ichs kann. Und weil ich eine kleine Hilfestellung zum Thema path im Allgemeinen und dem PHP include path im Speziellen zur Verfügung stellen möchte.
Was ist ein (include) path?
Das Wichtigste vorweg: was ist ein path eigentlich? Der path ist eine Variable, welche einem System eine Sammlung von Verzeichnis-Pfaden angibt. In diesen Verzeichnissen sucht das System Bibilotheken oder ausführbare Dateien. Linux beispielsweise verwaltet den path in der PATH-Variable welche wie folgt aussieht:
[ghost@spacebox ~]$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
Die Verzeichnisse werden durch einen Doppelpunkt ":" getrennt.
Gibt man in der BASH nun einen Befehl ein, durchsucht das System die Verzeichnisse, welche im PATH angegeben sind, ob eine ausführbare Datei existiert, deren Namen dem eingegeben Befehl entspricht und führt dieses script oder diese binary im Anschluss daran aus.
In PHP gibt es auch einen path: den include path. Diese Variable wird in der php.ini gesetzt und gibt die Verzeichnisse an, in denen include-Dateien zu finden sind.
Wie funktioniert der include path?
Verwendet man in seinem script nun require, require_once, include oder include_once, versucht PHP den Dateinamen in den, im include path angegebenen, Verzeichnissen zu finden. Da der erste Eintrag im include path "." ist, welcher dem aktuellen Arbeitsverzeichnis des scripts entspricht, durchsucht PHP dabei zuerst das Verzeichnis, in dem das Script ausgeführt wird.
Wie trage ich ein Verzeichnis in den include path ein?
Wir bereits erwähnt, wird der include path in der php.ini gesetzt. Die entsprechende Variable kann jederzeit um weitere Pfade erwetiert werden.
Beispiel:
include_path = ".:/usr/share/php"
wird zu:
include_path = ".:/usr/share/php:/usr/lib/php"
Des Weiteren gibt es die Möglichkeit, den include path für das aktuelle Script anzupassen. Dazu stehen die Funktionen set_include_path() und get_include_path() zur Verfügung.
Beispiel:
<?php set_include_path(get_include_path() . ':/usr/lib/php');
Mit der Funktion restore_include_path() kann der originale include path wiederhergestellt werden.
Zusätzliches know how
Auch die Funktionen fopen, file, file_get_contents und readfile verwenden den include path!
Ich hoffe, ich konnte euch das Thema path etwas näher bringen. Fragen dürfen natürlich gerne als Kommentar verfasst werden
