Problem mit INCLUDE - Directory
Kalle
- php
Hi,
ein kleines Problem mit dem richtigen Verzeichnis:
Datei /xxx.php enthält:
...
INCLUDE ( "yyy.php" )
...
Datei /dir/zzz.php enthält:
...
INCLUDE ( "../xxx.php" )
...
Die xxx.php wird gefunden, nicht aber die dort aufgerufene yyy.php, weil die wohl im Verzeichnis /dir gesucht wird.
Ist sicher nur ein kleiner Trick, aber ich kenne ihn nicht.
Liebe Grüße aus Worms, Kalle
Ruhig Blut!
Beschreib das nochmal richtig. Das ist mehr als verworren, was du da hingeschrieben hast.
Fange zunächst damit an, aufzulisten, welche Datei in welchem Verzeichnis steht.
Schreibe dann genau auf, welche Datei welche mit welchem Aufruf includiert.
Ich schätze mal, dann brauchst Du nicht mehr Auf [Nachricht absenden] klicken.
fastix
Ruhig Blut!
Beschreib das nochmal richtig. Das ist mehr als verworren, was du da hingeschrieben hast.
ALSO im Hauptverzeichnis zwei Dateien:
xxx.php
yyy.php
wobei die yyy.php in Datei xxx.php mit INCLUDE ( "yyy.php" ) aufgerufen wird. Das klappt normalerweise, weil beide im SELBEN Verzeichnis stehen.
Soweit ready ?
Jetzt eine dritte Datei im Verzeichnis /dir (also nicht / ):
/dir/zzz.php
darin wird die xxx.php mit INCLUDE ( "../xxx.php" ) aufgerufen.
Jetzt findet aber die /xxx.php ihre eigene /yyy.php nicht mehr, wahrscheinlich weil der erste Aufruf vom Verzeichnis /dir ausgeht.
Oder kann man INCLUDE nicht mehrstufig anwenden ?
Kalle
Hallo Kalle,
Oder kann man INCLUDE nicht mehrstufig anwenden ?
Doch. Aber include bezieht sich immer auf das aktuelle Arbeitsverzeichnis (sofern im include_path ein . vorhanden ist) aber *nicht* auf das Verzeichnis, in dem die aktuelle Datei liegt. (das aktuelle Arbeitsverzeichnis ist am Anfang das Verzeichnis, in dem das *aufgerufene* Script liegt, und es sei denn, Du änderst das mit chdir, bleibt es auch so)
Die Funktion dirname angewandt auf die Konstante __FILE__ liefert Dir das Verzeichnis, in dem sich die Datei, die aktuell abgearbeitet wird, befindet. Wenn Du an dieses Verzeichnis den Verzeichnistrenner / und den Namen der Datei anhängst und diese dann include()est, dann wird es funktionieren.
Grüße,
Christian
Hallo Christian,
ein Aufruf mit INCLUDE ( "/yyy.php" ) bringt
Warning: open_basedir restriction in effect. File is in wrong directory. in ../xxx.php on line 35
Habe jetzt die yyy.php in ein weiteres Verzeichnis kopiert. Blöde Lösung, aber ich kann's nicht besser.
Kalle.
Hallo Kalle,
ein Aufruf mit INCLUDE ( "/yyy.php" ) bringt
ich meinte auch nicht include ('/yyy.php'); sondern include (dirname(__FILE__).'/yyy.php'); Ich wollte das halt pädagogisch sinnvoll ausdrücken, was mir anscheinend nicht gelungen ist.
Grüße,
Christian