[PHP] Frage zum relativen Pfad beim Includen.
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absoluten pfaden
arbeiten
code
dank
datei
dokument
einbinden
file
folgendes schreiben
frage
hacke
knoten
limit
part
pfad
problem
relative pfad
relativen pfaden
url
verzeichnis
-
Hey ;)
Ich habe eine Frage zu relativen Pfaden wenn man in PHP include, require, etc. verwendet.
Ich habe eine Verzeichnisstruktur, die in etwa so aussieht:
FILE datei.php DIR config - FILE config.php DIR class - FILE class.php - FILE class2.php
Also im Hauptverzeichnis befindet sich eine Datei und zwei Unterverzeichnisse. In jedem Unterverzeichnis befinden sich weitere Dateien.
Nun will ich in datei.php meine Klasse verwenden, und muss in dieser also class.php einbinden.
require('./class/class.php');
Die Klasse selbst benötigt etwas aus der config.php. Um diese einzubinden, muss ich in class.php nun folgendes schreiben:
require('./config/config.php');
Das funktioniert, kommt mir aber eigenartig vor. Ich include beide male mit "./" , da alles von der datei.php ausgeht.
Ich hätte aber erwartet, dass ich in class.php die config.php mit "../" einbinden muss, da ich ja erst ein Verzeichnis hoch gehen muss, um dann in config zu landen.
Soweit funktioniert der Code allerdings.
Nur wenn ich nun aus class2.php die class.php benötige, funktioniert das nicht mehr, denn aus dem Unterverzeichnis stimmt der relative Pfad "./config.php" ja nicht mehr.
Ich hoffe, ich konnte das Problem halbwegs deutlich darstellen.
Meine Frage lautet nun:
Geht so etwas überhaupt mit relativen Pfaden?
Oder muss ich mit absoluten Pfaden arbeiten?
lg
Sincer
Beitrag zuletzt geändert: 25.7.2011 13:45:41 von sincer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Der Pfad des Dokuments bleibt gleich, unabhängig davon, in welcher Datei der Code steht. Dementsprechend ist immer von der Datei aus zu gehen, die von User aufgerufen wurde.
-
Hey ;)
Ja danke, genau diesen Effekt habe ich gerade bemerkt.
Aber ich sehe, dass ich mein Problem (den Fall mit class2.php) schlecht beschrieben habe...
Ist jetzt ein blödes Beispiel von der Namensgebung, aber egal:
Wenn sich jetzt in dem Verzeichnis "class" eine "user.php" befindet, die vom User direkt aufgerufen wird.
"user.php" benötigt ebenfalls "class.php", die wiederum "config.php" benötigt.
Nun stimmt der relative Pfad zur config.php nicht mehr, wenn man user.php aufruft.
*Knoten in der Zunge hab* ^^
Jetzt sollte die Problembeschreibung stimmen. Verstehst du, was ich meine?
Nun muss ich ja mit absoluten Pfaden arbeiten, oder gibt es eine alternative?
lg
Sincer -
Hey ;)
// EDIT: Gelöst -> Ganz unten :)
drafed-map schrieb:
Nimm $_SERVER['SCRIPT_FILENAME'] und hacke den Dateinamen ab
Danke für deine Mühe, aber das funktioniert leider nicht :(
Wenn ich deinen Code in meine Klasse gebe, und den Pfad ausgeben lasse, denkt die Klasse, dass ihr Dateiname die aufrufende Datei wäre.
Um im Gegebenen Beispiel zu bleiben:
Ich gebe deinen Code in class.php (mit dem echo), und rufe im Browser datei.php auf (die class.php einbindet). Nun gibt mit das Echo (aus class.php) den Dateinamen von datei.php aus. (Also sofern ich das Limit bei explode() von -1 auf 0 setze.)
Gibt es da noch eine andere Möglichkeit, das absolut, aber dynamisch zu gestalten?
Danke auf jeden Fall :)
Sincer
// EDIT:
Hab's schon :)
Es geht mit __FILE__
$parts = explode('/', __FILE__, $limit);
Vielen Dank drafed-map :)
Beitrag zuletzt geändert: 25.7.2011 18:37:34 von sincer -
Ohne die Zwei Punkte (./), denn die datei.php befindet sich ja im selben Verzeichnis wie die anderen Verzeichnisse
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage