[PHP] "Root-Pfad" ermitteln
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absoluten pfad
aktuellen datei
base
code
datei
dokument
einbindung
ermitteln
folgende url
http
index
liegen
mode
ordner
pfad
problem
produktionssystem
tag
testsystem
virtuellen verzeichnisse
-
Moin,
ich habe tag/folgende url">folgende URL:
http://www.example.com/admin/preferences/useredit/123456789
Diese wird mittels mod_rewrite (Rules liegen in admin/) umgeschrieben zu
preferences.php?mode=useredit&id=123456789
Im Ordner http://www.example.com/admin/include/ liegen Daten, die eingebunden werden müssen.
Eine relative Pfadangabe (./include/include.php) funktioniert da nicht.
Das müsste schon sein: ../../../include/include.php (exemplarisch; es ist möglich, dass ein "../" zu viel oder zu wenig ist)
Kein Problem, ich könnte ja diesen Pfad im include-Befehl angeben.
Es gibt jedoch auch folgende URL:
... /preferences/index.html
die ganze einfach umgeschrieben wird zu
... preferences.php
Wenn ich da jetzt die Dateien mit relativem Pfad einbinde, muss ein anderer her.
Die Tiefen der "virtuellen" "Verzeichnisse" sind unterschiedlich.
Also müsste ein absoluter Pfad her.
Der wird tatsächlich auch ermittelt, allerdings erst in einer der eingebundenen Dateien.
Doch diese muss ja auch eingebunden werden.
Wie kann ich den absoluten Pfad bis zu admin/ ermitteln?
$_SERVER['DOCUMENT_ROOT'] bringt nicht allzu viel, da auch admin/ unter Umständen in einem Unterordner liegt (z.B. /srv/www/htdocs/projekt-xyz/admin/) und als Ausgabe dann natürlich nur "/srv/www/htdocs" zurückkommt.
Den Pfad in jeder Datei einzeln anzugeben ist auch zu "russisch", da cih ihn bei einem Wechsel der Umgebung dann überall manuell anpassen muss.
Oder gibt es eine ganz andere Möglichkeit, das zu lösen?
Irgendwie funktioniert das ja :)
gruß
ferdinand24 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hmm mich wundert dass du auf deinem Produktionssystem dann dein Dokument-Root oberhalb verschiedener Projekte hast, aber das könnte ja durchaus so sein
Im Testsystem (xampp) ist das zwar meist so, aber im Live-Betrieb meist anders.
Naja egal auf die schnelle fällt mir da nur folgendes ein:
include(dirname(__FILE__).'filename.php');
wobei dirname(__FILE__) den Pfad der aktuellen Datei wiedergibt
Grüßle
Beitrag zuletzt geändert: 27.4.2009 17:54:29 von scout -
Wenn du mit Mod_rewrite den Pfad änderst, bleibt der Pfad in PHP dennoch der gleiche!
Du kannst also per http://www.domain.de/bla/und/blubb.php welche zu index.php?para1=bla¶2=und&.. geroutet wird dennoch Dateien einbinden, die Einbindung findet von index.php aus statt und nicht von /bla/und/blubb.php. Du brauchst also keinen absoluten Pfad.
Problemtaisch ist das eher im Browser, da du ja jede Menge Sachen hast, die verknüpft werden, zB Bilder, Links, Stylesheets usw. Damit du auch dort keinen absoluten Pfad brauchst, kannst du den Base-Tag (<base href="http://www.domain.de" />) verwenden. -
Moin,
entweder stelle ich mich ziemlich blöd an, oder es ist aber tatsächlich doch nciht so, wie du es sagst...
Das Base-Tag verwende ich schon; aber mit den Pfaden für die PHP-Skripte, das hat jetzt hier nicht geklappt...
Wahrscheinlich vollkommene Verpeilung... -
Wenn ich dich richtig verstanden habe, ist dein Problem, dass die preferences.php nicht immer gefunden wird je nach Ordner der ausgewählt wurde.
dann mach doch in der .htaccess aus preferences.php?mode=useredit&id=123456789 ein /preferences.php?mode=useredit&id=123456789
Ansonsten bleiben dir für ROOT nur die Server Directive oder halt wie sout schon sagte dirname(__FILE__) um von der ausführenden Datei auszugehen
lg -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage