einbinden anhand relativen Pfades will nicht mehr ...?
WauWau
- php
Hallo,
Folgendes liegt zugrunde:
[Hauptverzeichnis]
+- portal.php
|
+--+ news
| +- library.php
| +- read_news.php
|
+--+ librarys
: +- news.php
: +- mysql.php
.
Es ist ein komplizierteres News-System, aber das ist so ziemlich irrelevant. Jedenfalls ruft der Surfer die Datei "portal.php" auf, in der das steht:
require "librarys/news.php";
diese Datei wiederum bindet wiederum die Datei "news/read_news.php" ein:
require "news/library.php";
und diese wiederum in einer Klasse die Datei "librarys/mysql.php":
require_once("librarys/mysql.php");
Problem: Der Script geht bei allen Daten beim Includen von dem Verzeichnis der "Ursprungsdatei" aus, also "/". Die Dateien "librarys/news.php" sowie "news/libary.php" sollen aber eigentlich unabhängig voneinander arbeiten. Das Problem kommt nun schon, wenn eine Datei im "news"-Verzeichnis die Datei "library.php" im News-Verzeichnis einbindet. Denn dann ist das "Urpsrungsverzeichnis", an dem die Einbindung der "library/mysql.php"-Datei festgemacht wird, wieder ein anderes.
Komischerweise hatte ich bis jetzt afaik das Problem noch nicht gehabt, irgendwie ging ich immer davon aus, ein Script geht beim einbinden von dateien immer relativ von seinem Verzeichnis aus, und das hat er auch immer gemacht. Beispielsweise bindet die Hauptlibrary "main.php" in "libarys", die eine Klasse zur dynamischen Erstellung einer gesamten Seite bereitstellt, in einer Funktion die Datei "tips.txt" ein. Also irgendeine Datei irgendwo in irgendwelchen Verzeichnissen bindet per require die Datei librarys/main.php ein, und die wiederum:
file("tips.txt");
ein.
Woran kann es liegen?
Vielen Dank,
WauWau
PS: Wer sich fragt, "wieso so ein einbindungsumstand", für den sei der folgende kleine Text: Die Datei "news/library.php" stellt eine globale Klasse für die News dar. Als Zentrum des Newssystems geht hier alles durch. Die Datei "librarys/news.php" ist eine Art interface für schnelles Ausdrucken der aktuellen News oder ähnlichem - mittels der simplen Funktion 'print_NEWS("*", "db verbinden");' wird mit der DB verbunden, die News rausgesucht und formatiert und letztenendes dann ausgedruckt.
Nnu bleibt nur noch die Datei "libarys/mysql.php", und ihre Aufgabe ist so simpel wie genial: Sie stellt die Funktion "GetMySqlPassword" zur Verfügung, die ein je nach parametern aufgerufenes Passwort für die Verbindung mit der MySQL-Datenbank zurückgibt.
hi,
Problem: Der Script geht bei allen Daten beim Includen von dem Verzeichnis der "Ursprungsdatei" aus, also "/".
warum stellt dieses völlig normale und so vorgesehene verhalten für dich ein problem dar?
gruss,
wahsaga
Hallo wahsaga,
Problem: Der Script geht bei allen Daten beim Includen von dem Verzeichnis der "Ursprungsdatei" aus, also "/".
warum stellt dieses völlig normale und so vorgesehene verhalten für dich ein problem dar?
Ich denke, das habe ich bereits geschrieben!? Immerhin sagte ich ja, dass ich den Script von Scripten aus unterschiedlichen verzeichnissen einbinden lassen werde und gerne mit relativen Angaben arbeiten würde.
WauWau
hi,
Immerhin sagte ich ja, dass ich den Script von Scripten aus unterschiedlichen verzeichnissen einbinden lassen werde und gerne mit relativen Angaben arbeiten würde.
und was ändert das an der tatsache, dass du die relative adressierung offenbar anders "funktioniert", als du annimmst?
gruss,
wahsaga