PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : referenzierung absolut/relativ



laminar
19-01-2003, 17:07
tach´
ich sitz' grad´auf´m schlauch:

ich inkludiere eine datei von verschiedenen ordner ebenen;
wenn ich zb.

include("../../meinedatei.php"); nehme, geht das von der einen ebene, nicht aber von der nächst höheren, denn da müsste es ja

include ("../meinedatei.php"); heissen.

wenn ich den pfad mit http://123.456.789.000/usw/ angebe verliere ich geschwindigkeit, oder?

kann ich den pfad nicht ohne http absolut festlegen ?

Gaert
19-01-2003, 18:29
Klar!
Du kannst auch die Datei über das Dateisystem bestimmen (wenn du weisst wo sie absolut liegt)!

also z.B.

/var/www/http/includes/include.inc.php

laminar
19-01-2003, 18:37
denn, wenn in einer datei referenziere:

include ("home/xyz/usw/datei.php")
schreibe

setzt er noch den Pfad des ordners, in dem die aufrufende datei liegt DAVOR

also dann http://meinedomain.de/home/xyz/home/xyz/datei.php

mehlvogel
19-01-2003, 18:41
Dann musst du wie in Loinux üblich das "/" vor die Pfadangabe setzen. Also:



include("/home.../meinedatei.php");

laminar
19-01-2003, 19:34
komisch, ich dachte, das als erster probiert zu haben - naja, wie´s so geht..

das löst aber immer noch nicht das problem einer absoluten referenzierung mit ein und dem selben pfad aus mehreren ebenen ohne http://

denn

zb. src="<?echo ("/home/media/inc/config.php");?>

aus inc/content.php

aufgerufen geht nicht, weil er ja noch in "inc" ist; lasse ich die ordner davor weg, geht es aus einer anderen ebene nicht.

mit $SERVER_NAME komme ich auch nicht weiter, das auf die verschiedenen ebenen mit mehreren domians zugegriffen wird..

naja http mässig gehts ja - ich denke halt nur dass das speed kostet.
merkwürdigerweise geht auch http://127.0.0.1/usw
nicht..?

Xerxes
19-01-2003, 19:59
PHP:
Ein / vor der Pfadangabe heißt, dass man vom Root-Verzeichnis des Servers ausgeht.
Wenn eine zu includierende Seite also beispielsweise in /home/meineseite/inc liegt, musst du sie immer per include( '/home/meineseite/inc/date.php' ); includieren, wenn du einen absoluten pfad möchtest.

HTML: (also bei pfaden für bilder, style-sheet-dateien etc)
Ein / vor der Pfadangabe heißt, dass man immer vom Document-Root des Webservers ausgeht.
Wäre also /home/meineseite das document root und du möchtest absolut auf eine datei in /home/meineseite/images linken, musst du folgendes schreiben:
echo '<img src="/images/bild.jpg" />';

Gaert
19-01-2003, 20:09
Schon mal dran gedacht, das Verzeichnis einfach über die PHP.ini als Include Verzeichnis zu setzen?
Dann sparst du dir zumindest bei den Includes die Pfadangaben!

laminar
19-01-2003, 20:17
aber genau so geht´s bei mir nicht - da muss wohl irgendwo eine einstellung im apache oder sonst wo sein, die das verhindert...

Xerxes
19-01-2003, 20:17
Original geschrieben von Gaert
Schon mal dran gedacht, das Verzeichnis einfach über die PHP.ini als Include Verzeichnis zu setzen?
Dann sparst du dir zumindest bei den Includes die Pfadangaben!
Wenn er sie denn ändern kann. Hat er irgendwo webspace, kann er's nicht. dann ist dieses wissen durchaus von vorteil. ;)

laminar
19-01-2003, 20:33
eigenen server...

mehlvogel
19-01-2003, 20:35
Original geschrieben von laminar
aber genau so geht´s bei mir nicht - da muss wohl irgendwo eine einstellung im apache oder sonst wo sein, die das verhindert...

Ich versteh mittlerweile nur noch Bahnhof. Poste mal bitte ein etwas größeres Codestück und sag nochmal was genau net geht...

laminar
19-01-2003, 20:45
die hier allgemein als funktionierend annerkannte variante, einen pfad ABSOLUT zu referenzieren, also so, dass man ihn aus allen ebenen verwenden kann,
mit vorangestelltem / also:

/document/root/ordner/usw...

funktioniert bei mir nicht; datei wird nicht gefunden.


über http:// geht es - aber ich vermute, dass das performance kostet.
obwohl man da bestimmt auch wieder irgendwo was eintragen kann...

mehlvogel
19-01-2003, 21:09
In einem PHP Skript oder als HTML Link?

silvercross
20-01-2003, 09:41
Wenns mit php.ini nicht klappt würde ich folgendes probieren.

Setze vor dem Include einfach ein '@', das sollte die Fehlermeldung unterdrücken.

Bsp



@include("../daten/inc.inc")
@include("../../daten/inc.inc")



mfg
Michael

mehlvogel
20-01-2003, 14:02
Das löst das problem ja nicht,d as die Dateinicht inkludiert wird...

silvercross
21-01-2003, 15:01
ja, aber wenn er von verschiedenen "Ebenen" auf das Script zugreift, kann er alle möglichen Angeben, ohne dass eine Fehlermeldung auftreten würde.
is zwar programmiertechnisch mehr als schlecht, aber wenn man die php.ini net verändern kann .. eine mögliche option

mfg

Michael