Aktuellen Pfad feststellen?

Hi,

ich suche eine Möglichkeit, den aktuellen Pfad heraus zu finden. Speziell geht es um dateien welche per include() eingefügt werden. Dabei ändert sich ja bekanntlich der Pfad der eingefügten datei. Da ich aber nicht immer komplett alle Pfade ändern möchte, wenn ich etwas umschreibe, möchte ich eine funktion schreiben, welche den aktuellen Pfad herausliest.

Danke

-Michael

Hi,

ich suche eine Möglichkeit, den aktuellen Pfad heraus zu
finden. Speziell geht es um dateien welche per include()
eingefügt werden. Dabei ändert sich ja bekanntlich der Pfad
der eingefügten datei.

wie das?

Da ich aber nicht immer komplett alle
Pfade ändern möchte, wenn ich etwas umschreibe, möchte ich
eine funktion schreiben, welche den aktuellen Pfad
herausliest.

na dann schau dir $_SERVER u.a. aus php_info() an, spez. PATH_TRANSLATED

Hi,

ich suche eine Möglichkeit, den aktuellen Pfad heraus zu
finden. Speziell geht es um dateien welche per include()
eingefügt werden. Dabei ändert sich ja bekanntlich der Pfad
der eingefügten datei.

wie das?

Ganz einfach. Wenn ich eine index.php habe und in dieser eine 2te php öffne befindet sich die 2te Datei im Pfad der index. Das Problem dabei ist immer daran denken zu müssen ob und wen ja wo die Datei eingefügt werden soll. Denn dann muss der Pfad endsprechend angepasst werden. dies soll nun automatisch geschehen.

Da ich aber nicht immer komplett alle
Pfade ändern möchte, wenn ich etwas umschreibe, möchte ich
eine funktion schreiben, welche den aktuellen Pfad
herausliest.

na dann schau dir $_SERVER u.a. aus php_info() an, spez.
PATH_TRANSLATED

Werd ich tun :smile:)

Hi Michael,

grundsätzlich kannst Du den akutellen Pfad auf dem Server folgendermaßen herausfinden, in dem Du folgenden Wert abfragst und weiterverarbeitest: $_SERVER[‚DOCUMENT_ROOT‘];

Wenn Du aber lediglich eine Datei per Include() einbinden willst - warum machst Du das Ganze dann soooooo umständlich???
Es genügt, wenn die Datei im selben Verzeichnis oder in einem Unterverzeichnis liegt. Du kannst sie einfach mit include „blabla.inc“ bzw. „./unterverzeichnis/blabla.inc“ einbinden unabhängig vom Pfad, denn der ist ja immer derselbe!! Der interessiert dich eigentlich hauptsächlich nur dann, wenn Du einen benutzergestarteten Datenupload ausführen möchtest (z.B. Bilder, PDFs usw.).

Grüße,
Tanja

Es genügt, wenn die Datei im selben Verzeichnis oder in einem
Unterverzeichnis liegt. Du kannst sie einfach mit include
„blabla.inc“ bzw. „./unterverzeichnis/blabla.inc“ einbinden
unabhängig vom Pfad, denn der ist ja immer derselbe!! Der
interessiert dich eigentlich hauptsächlich nur dann, wenn Du
einen benutzergestarteten Datenupload ausführen möchtest (z.B.
Bilder, PDFs usw.).

Ja das stimm schon, aber wie unübersichtlich wird das bei einem CMS wenn Du alles in einem Verzeichnis liegen hast. Da muss schon etwas Ordnung rein. Schon alleine wegen der Teilung von Admin undUser Bereich.
Ausserdem was nützt mir die ganze Dynamik von PHP, wenn ich doch alles statisch angebe? Will ich jetzt mal was ändern muss ich in jeder Datei den include ändern. Ziemlich umständlich oder?

Nichts für ungut :smile:

Danke
-Michael

ööhm, ich glaube jetzt habe ich genau verstanden, was Dein Ziel ist!Klar wird es verdammt unübersichtlich, wenn man alles in einem Ordner lässt, aber das kannst Du ja, wie ich oben beschrieben habe, trotzdem mit Angabe von Unterordnern machen sofern der Startordner immer derselbe ist und die einzubindenden Dateien in den Unterordnern oder im selben Verzeichnis liegen.
Wenn Du natürlich einen Ordner X (homepage) und einen Ordner Y (admin) parallel liegen hast und dann im Ordner X die Datei mit dem Include-Befehl liegt und dieser auf eine Datei im Ordner Y verweist, dann brauchst Du den aktuellen Pfad vermutlich. Da hast Du recht!

Du kannst ihn ja immer automatisch dynamisch einlesen, denn der aktuelle Pfad befindet sich automatisch in der Variablen
$_SERVER[‚DOCUMENT_ROOT‘].

Dann nimmst Du demnach folgende Zeile:
include „$_SERVER[‚DOCUMENT_ROOT‘] . ‚/ordner/einzubindendedatei.inc‘“;

Grüße,
Tanja

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

unschön
Du könntest es auf eine solche art und weise machen:

durchlaufe alle dateien im Ordner. Wenn Dein Dateiname dabei ist dann includiere sie. Wenn nicht, dann durchlaufe alle unterverzeichnisse - wenn die Datei dabei ist - includiere sie… etc
sollte mit einer rekursiven Funktion funktionieren…

das ist aber etwas unschön, weil so der Server immer alle Dateien durchsuchen muss…
Eine andere wäre eine art doppeltes include…
includiere eine datei mit den funktionen der includes…
also ein include(„includes.php“); wenn Du dann die jeweiligen includes in deinen Scripts brauchst rufst Du die jeweilige Funktion auf… So kannst Du in einer Datei alles auf einmal ändern.
Eine weitere, aber etwas sinnfreie Variante wäre halt noch, einfach ein $includepath="./lalala/" zu definieren und dann halt diesen zu verwenden… kommt halt alles auch drauf an wie oft Du was alles includieren musst…