phpbar.de logo

Mailinglisten-Archive

[php] Relativen Dateipfad ermitteln

[php] Relativen Dateipfad ermitteln

Thomas Langfeld opa.thomas at fhtw-berlin.de
Mit Okt 15 12:43:33 CEST 2003


Hallo Lutz,

> Hi Thomas,

> > Jetzt benötige eine Vorgehensweise, um diesen relativen Pfad
> immer korrekt
> > zu ermitteln.
> > Stehe auf dem Schlauch, weil mir fällt dazu irgendwie nix ein. :-(
>
> ist das nicht ein klassischer Fall, wo sinnvollerweise ein ABSOLUTER Pfad
> verwendet werden sollte? ;-) Das Upload/Download-Verzeichnis
> scheint doch immer
> an derselben Stelle zu liegen. Dann musst Du nicht die ganzen Verrenkungen
> ausfuehren, um einen relativen Pfad zu ermitteln.

Theoretisch: Ja!
Praktisch: Nein!

Der Pfad wird an ein externes Programm übergeben, welches auf Grund eines
Bugs mit zu langen Dateinamen nicht zurechtkommt!
Während ../../foo/bar/foo.doc funktioniert,
gibts bei /var/foo/bar/a/b/c/d/ (der Pfad ist noch wesentlich länger)
Probleme.

>
> Wenn Du aber drauf bestehst, gibt es mehrere Moeglichkeiten das
> zu tun. :-) Von
> der Logik her musst Du das "/var/www/" von Deinem physischen Pfad, z.B.
> /var/www/foo/bar/dummy.php, entfernen und dann alle verbleibenden
> "xyz/" durch
> ein "../" zu ersetzen. Z.B. so:
>
> $sDeinPfad  = '/var/www/foo/bar/dummy.php';
> $aPfadArray = explode ('/', $sDeinPfad);
> $iAnzahlElemente = count($aPfadArray);
> $iAnzahlRelVerz  = AnzahlElemente - 3;
> $sDeinRelPfad    = '';
> for ($i=0; $i<$iAnzahlRelVerz; $i++) {
>   $sDeinRelPfad .= '../';
> }
> $sDeinRelPfad .= $aPfadArray[$iAnzahlElemente-1];
>
> So in etwa. UNGETESTET!

Danke für die Mühe.

Teste gerade das Beispiel von dave (3. Kommentar) der Doku von realpath().
Danach schaue ich mir deins mal genauer an!


Gruß
Thomas


php::bar PHP Wiki   -   Listenarchive