include() im Verzeichnisbaum

Wolfsbein

Erfahrenes Mitglied
Habe hier folgendes Problem:
im Stammverzeichnins liegen PHP-Dateien. In diesen Dateien wird per include ("gb.inc.php"); diese Datei includiert. In gb.inc.php steht aber noch include ("var.inc.php");. Jetzt kommt das Problem: im Unterverzeichnis /admin/ liegt die Datei admin.php. In dieser Datei wird wieder gb.inc.php includiert: include("../gb.inc.php");. Jetzt meckert aber verständlicherweiße der Interpreter, da er ja var.inc.php nicht finden kann, da diese Datei ein Verzeichnis höher liegt. Ich habe das ganze in gb.inc.php jetzt so gelößt:
Code:
if (! @include ("var.inc.php")) {include ("../var.inc.php");}
Das läuft. Nur glaube ich nicht, dass es so am besten ist, oder? Was könnte man da noch verbessern?
 
Also ich erstelle mir immer eine Variable am Anfang der Datei, die den relativen Pfad zum Hauptverzeichnis enthält. Hier ein Beispiel:

Die Datei index.php in deinem Stammverzeichnis:
PHP:
// Variable erstellen
$doc_root = "./";

// Includes
include ("gb.inc.php");

Deine admin.php
PHP:
// Variable erstellen
$doc_root = "../";

// Includes
include ($doc_root."gb.inc.php");

Und jetzt die gb.inc.php:
PHP:
// include der var.inc.php
include ($doc_root."var.inc.php");

// weiterer Code...

Du musst die Variable $doc_root aber als erste erstellen. Die gb.inc.php kennt dann die Variable auch und benutzt automatisch das richtige Verzeichnis. So kannst du auch ganz einfach mit mehreren Unterverzeichnissen arbeiten und musst lediglich die $doc_root anpassen.
 
Zurück