phpbar.de logo

Mailinglisten-Archive

[php] Pfad von Datei feststellen

[php] Pfad von Datei feststellen

Ulf Wendel ulf_(at)_redsys.de
Sat, 03 Jun 2000 08:19:50 +0200


André Laugks wrote:
> Wie kann ich herausfinden, welchen Pfad eine Datei, z.B. *.html
> zum Rootverzeichnis hat. z.B.
> 
> http://www.domain.de/
> >Ordner<
>    ordner1
>      1.html
>      2.html
>      3.html
>    ordner2
>      4.html
>      5.html
>      6.html
> 
> Das ganze soll für ein Suchscript sein. Ich möchte das Script
> durch die Ordner1 und Ordner2 schicken und die Dateien nach
> dem Suchstring durchsuchen. Wird etwas gefunden, zum Beispiel
> in 2.html, möchte ich einen Link ausgegeben bekommen, also z.b.
> /ordner1/2.html. Denn möchte ich in einem Array ablegen und dann
> weiter mit der Suche fortfahren.

Egal ob Du die relative Lage eines PHP Skripts oder einer anderen Datei
zum Document Root ermitteln möchtest, Du benötigst zunächst eine
Pfadangabe der Dateien, die untersucht werden sollen.

Bei PHP Skripten ist es recht einfach, zu erfahren wo sie relativ zum
Document Root liegen. In einer der zahllosen Enviroment Variablen
findest Du einen passenden Wert, phpinfo() ist Dein Freund ($SCRIPT_PATH
für die vertriebenen Windows Binaries und $PHP_SELF unter Unix). Willst
Du die relative Lage einzelner HTML Dateien im Vergleich zu anderen
herausfinden, besorgst Du Dir alle notwendigen Angaben in einem
gesonderten PHP Skript mit den Directory Funktionen
http://uk.php.net/manual/ref.dir.php3.

Paß bei der HTML Lösung auf. Je nach Hostingmaschine könnte es sein, daß
Du Pfade bekommst die über das Document Root hinausreichen. Dein Pfad
ist dann nicht "/index.htm", "/ordner1/1.html", sondern
"/home/www/servers/www.Ihrname.de/..." - Du befindest dich in diesem
Fall nicht in einem "changeroot enviroment" und mußt das Document Root
Verzeichnis von den gefundenen Angaben abziehen. Das verbleibende sollte
so aussehen wie $PHP_SELF.

Der gefundene Pfad wird exploded
http://uk.php.net/manual/function.explode.php und die Anzahl der
Elemente im resultierenden Array benutzt, um die relative Lage zum
Document Root zu bestimmen.

$path     = explode("/", $PHP_SELF);
$level    = count($path);
$relpath  = "";

for ($i=2; $i<$level; $i++)
  $relpath.="../";

$file = $relpath.$filename;

Ulf


php::bar PHP Wiki   -   Listenarchive