Problem mit Referenzierung bei include

scanline

Erfahrenes Mitglied
Hallo,
kleine frage...
include("/inc/kleinedatei.php");
sollte vom root der domain aus ins Verzeichnis inc springen und die Datei kleinedatei.php includen.
Macht er aber nicht.
Referenzier ich per ../../../ usw., gehts.
Die Referenzierung /inc/kleinedatei.php funktioniert unter HTML, d.h., der Server verstehts und der Pfad stimmt.

Ist das ein bekanntes PHP-include-Problem?

Gruß
Micha
 
ich meine gehört zu haben dass aus Sicherheitsgründen man beim php befehl include() in keine verzeichnisse wechseln darf die unter dem aktuellen ordner liegen (also ../) wozu ins root zu wechseln ja auch gehört
 
It´s not a bug - it´s a feature! ;)

Eine Pfadangabe, die mit einem Slash ("/") beginnt, bezieht sich immer auf den Root, also dem untersten Element im Dateisystem.

Da man aber bei Webhostingangeboten nur selten Zugriff auf den Root hat (es sei denn bei schlecht konfigurierten Servern oder bei Dedicated Server Angeboten), liegen deine Dateien meist in einem Unterordner, z.B. "/www/docs/users/a4239/". Das ist dann auch gleichzeitig die unterste Ebene, auf die du zugreifen kannst. Aber woher soll PHP wissen, dass du dich bei deinen Pfadangaben auf dieses Verzeichnis beziehst? Genau, es kann es gar nicht wissen, es sei denn man sagt es ihm ;) (Ist das eigentlich normal, dass man liebgewonnene Programmiersprachen personifiziert? Na egal ;))

Darum musst du entweder mit relativen Pfadangaben arbeiten (was du ja schon erwähnt hast), oder den korrekten absolution Pfad vom Server-Root aus angeben. Ich würde dabei zu ersterem raten, da deine PHP-Scripts dann auch garantiert auf anderen Webservern problemlos laufen (bezogen auf das Verzeichnisproblematik). Alternativ dazu kannst du auch ein $_SERVER[DOCUMENT_ROOT] vor deine "absoluten" Pfadangaben klatschen - zumindest bei PHP in Verbindung mit Apache sollte diese Variable nämlich dein Grundverzeichnis enthalten.

HTH
 
Zurück