Basename und Dirname arbeitet nicht richtig

Darian

Erfahrenes Mitglied
Hallo Leute,

dachte dass es vielleicht schon ein bekanntes Problem ist, und wollte daher vorher einmal nachfragen.

Ich muss ein PHP Programm was vorhin auf IIS Win gelaufen ist, jetzt auf einem Linux zum Laufen bringen. Nach vielen Fehlern und Problemen bin ich jetzt bei folgendem angelangt.

Da es sich um ein Upload Skript handelt, wird der ursprüngliche Pfad von Windows übergeben, und mit basename das File ermittelt. basename("C:\Dokumente und Einstellungen...") macht aber nichts.

dirname("C:\Dokumente und Einstellungen\...usw") gibt nur einen Punkt zurück.

Ich habe raus gefunden dass es an den \ liegt, sollte das nicht trotzdem funktionieren? mit / geht es)

php --version
5.2.6-3

Würde mich freuen wenn es da Lösungen gibt, und ich nicht alles per Hand umprogrammieren müsste.

thx und lg
Darian
 
Ok danke, das mit dem ersetzen ist mir schon klar, dachte nur vielleicht gibt es da doch irgendwo eine Einstellungen die mir das Leben erleichert.

Na dann, bleibt mir wohl nichts anderes übrig als alles zu ändern...

thx und lg
Darian
 
Hallo Leute,

kann es sein dass es mit dem urldecode(); da auch Schwierigkeiten gibt. Auf jedemfall bleibt das immer hängen. d.h. keine Fehlermeldung, das Skript läuft so lange bis ich es mit F5 unterbreche. Ich könnte jetzt alles per Hand dekodieren, aber vielleicht gibt es da ja eine Bessere Lösung.

lg Darian
 
wenn wir wüsten wie du urldecode anwendest? Wendest du das auf den pfad an? Wie sieht der Pfad in dem Moment aus?
 
Hallo Leute!

$file['name'][$i] ist zum Beispiel: C%eA%5CDokumente+und+Einstellungen%5Cusername%5CDesktop%5Ctest.txt

PHP:
$name = str_replace($userfile_parent,"",urldecode($file['name'][$i]));
$path ="$save_path" .  dirname($name);

Habe auch schon probiert alles von Hand zu machen, was mich aber auch nicht wirklich weiter gebracht hat. Wollte daher einmal klären ob urldecode hier jetzt allgemein Funktionieren sollte. Auf php.net gab es bezüglich urldecode() keine Infos.

thx und lg
Darian
 
Nimmzum prüfen mal urldecode in eine eigene Zeile. Ev. liegts auch am str_replace

PHP:
echo urldecode($file['name'][$i]);
//$name = str_replace($userfile_parent,"",urldecode($file['name'][$i]));
$path ="$save_path" .  dirname($name);
 
Zurück