include() mit absolutem Pfad geht net

D

dave

Hi Leute!
Ich versuch grad n Skript in n Skript einzubinden, das selbst per inlcude() eingebunden wird und zwar in Dateien in verschiedenen Ordnertiefen.
Da der Pfad ja immer relativ zu der Datei sein muss, in die das Skript eingebunden wird, kann man das ja nur mit nem absolutem Pfad lösen.

Soweit einfach, klappt nur net bei mir.
Eigentlich sollte ein Skript ,das im Stammverzeichnis liegt doch über include( "/das_skript.php" ); eingebunden werden können, egal von wo aus, oder nicht?
Bei mir kommt auf jedenfall immer die Fehlermeldung,

Warning: Failed opening 'php_lib/objects.inc.php' for inclusion (include_path='') in ../php_lib/launch.inc.php on line 2

Hat jemand von Euch ne Ahnung was da schief läuft?
Vielen Dank schonmal!
 
Probier mal:

include ("./das_script.php");

oder mit direkten angaben wie:

include ("../../das_script.php");


Anders sehe ich auch keine Lösung. Ich hatte mal ein Script programmier was mir den relativen Pfad von der aktuellen Datei zur Zieldatei berechnet. Vielleicht hilft das weiter.
 
eine Datei, die im gleichen Verzeichnis liegt kann man einfach mit include("datei.php"); einbinden.

Dein Problem ist aber glaube ich ein anderes: in der Datei, die Du einbindest sind weitere includes, bei denen die Pfade nicht stimmen.

um dieses Problem zu lösen muss man erstmal wissen, wie der Include-Befehl genau funktioniert:
gehen wir mal davon aus, Du hast im root-Verzeichnis eine index.php und in einem Unterverzeichnis sind mehrere Dateien, die includiert werden.
Wenn jetzt also in der index.php der Befehl steht: include("pfad/datei.php"), dann wird datei.php eins zu eins in die Datei index.php geschrieben. Alle Befehle, die von datei.php auf das Dateisystem zugreifen greifen jetzt aus dem root-Verzeichnis auf diese zu (obwohl datei.php in einem Unterverzeichnis steht).

alles klar soweit? gut ;) weiter:

steht jetzt in der datei.php ein include("datei2.php"); (und datei2.php steht im gleichen Verzeichnis wie datei.php) dann funktioniert das nur, wenn man datei.php direkt aufruft, aber es funktioniert nicht mehr, wenn man es über die index.php aufruft, weil dann ja datei2.php auch in die index.php includiert wird. Die Pfade müssen also in allen einzubindenden Dateien so angegeben werden, als ob man vom root-Verzeichnis darauf zugreift.

so, das hat jetzt mit Sicherheit keiner verstanden, aber einfacher kann ich's leider net erklären :eek:

Bei Verständnisproblemen einfach nochmal fragen.

Gruß
Dunsti
 
Was Du eben erklärt hast ist mir schon klar, aber das Problem wäre doch gelöst, wenn man bei dem 2. inlcude() Befehl einen absoluten Pfad verwenden könnte, dann wäre es egal, ob die Datei direkt ausgeführt oder eingebunden wird.
Hab auch schonmal so was wie
include( $REMOTE_ADDR . "/ordner/datei.php" ); probiert, geht aber auch nicht...

Muss doch irgendwie zu machen sein, dass man da nicht mit relativem Pfad arbeiten muss!
 
das sollte aber auch gehen. Problem ist nur, daß Du den Pfad so angeben musst, wie die Pfadstruktur auf dem Server Deines Providers ist.
Bei mir ist es z.B. /is/htdocs/[Kundennummer]/www.[Domain]/

anpassen musst Du die Scripte also in jedem Fall.

Gruß
Dunsti
 
Zurück