Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Probleme mit rekursiver Funktion

Hallo,

sicher liegt es nur an einem Denkfehler oder an irgend einer Kleinigkeit, aber ich komme momentan einfach nicht drauf und habe leider auch keinen blassen Schimmer, nach was ich suchen könnte.
Ich brauche ein Skript, das mir auf die Schnelle alle Dateien die sich in einem bestimmten Verzeichnis inclusive der Unterverzeichnisse befinden. Diese Skripte gibt es bestimmt wie Sand am Meer, aber eigentlich sollte es ja auch ganz einfach selbst zu lösen sein. Als Einstieg hab ich mir dann mal diese Funktion zusammengeschrieben:

Code:                   In Zwischenablage kopieren (nur IE)
1">

Wenn ich nun diese Funktion aufrufe werden mir alle Dateien im Verzeichnis aufgelistet. Auch werden mir alle Unterverzeichnisse und deren Unterverzeichnisse sauber rekursiv aufgelistet. Nur auf die Auflistung der Dateinamen aus den Unterverzeichnissen warte ich vergeblich. An der Rechtevergabe scheint es auch nicht zu liegen.
Vielleicht sieht ja einer von Euch, was ich hier falsch gemacht habe, bzw. ob ich vielleicht einfach einen Denkfehler drin habe.


Gruß

Thomas
Hier gehts zum Orginal Eintrag "Probleme mit rekursiver Funktion" im Forum

Antworten

Code:                   In Zwischenablage kopieren (nur IE)
2">

*** Nobody ***


2.

Hallo nobody,

Danke! Ich verstehe meinen Gedankenfehler. Die Funktionen is_dir() und is_file() funktionieren natürlich relativ zu dem Skript, das die Funktion aufruft. Somit hat die erste Ebene immer geklappt und ab da hat mir ja die Pfadangabe gefehlt. Momentan starte ich meinen Erstaufruf dieser Funktion mit
Code:                   In Zwischenablage kopieren (nur IE)
3">

Das funktioniert zwar im Prinzip super, auch wenn ich bei einem Windowsserver nun das Ergebnis habe, daß der erste Pfadteil mit "\" geschrieben wird und der zweite mit "/", was aber der Funktionalität keinen Abbruch leistet. Mich würde nun aber das ganze absolut relativ interessieren. Kann ich meine Pfadangabe anstatt absolut auch relativ zum Verzeichnis machen, in dem das Skript steht, das die Funktion aufruft? Wenn ja, wie sollte das am besten aussehen?


Gruß

Thomas


3.

Zitat:
Diese Skripte gibt es bestimmt wie Sand am Meer, aber eigentlich sollte es ja auch ganz einfach selbst zu lösen sein.
wieso läßt Du Dir dann von Nobody das Rad erneut erfinden ?


4.

Hallo Bernd456,

das an sich war eigentlich gar nicht meine Absicht. Ich hatte ja diese berühmten Codeschnipsel verwendet und dann leicht abgewandelt. Ich kann aber nicht mehr sagen, ob ich beim Übertragen hier etwas übersehen hatte, oder ob schlichtweg das verwendetet Codeschnipsel schon diesen Gedankenfehler drin hatte.
Leider hänge ich jetzt noch an dem "Gedankenproblem", das "aktuelle" Verzeichnis als gültigen Pfad an die Funktion übergeben zu können, ohne getcwd() zu verwenden. Ich will also die Funktion in einem Skript aufrufen und dabei das aktuelle Aufrufverzeichnis als "virtuelles" Root-Verzeichnis betrachten. Das heißt, alle Dateien, die sich in dem selben Verzeichnis befinden sollten ohne Pfadangabe durchlaufen und die in den Unterverzeichnissen dann eben mit einer Pfadangabe relativ zum Aufrufverzeichnis.
Rufe ich die Funktion mit dem Verzeichnisnamen eines Unterverzeichnisses auf, funktioniert das wunderbar. Nur womit kennzeichnet man das aktuelle Arbeitsverzeichnis mit relativen Angaben? :-(


Gruß

Thomas


5.

Schau mal mit phpinfo in $_SERVER - da gibt es Pfadangaben.

Das aktuelle Script erhälst du z.B. mit $_SERVER['PHP_SELF'].

[doc]getcwd[/doc]

Zwischen aktuellem Arbeitsverzeichnis und aktuellem Verzeichnis dürfte ein Unterschied sein.


6.

Hallo Bernd456,

genau das war ja der Weg, den ich nicht gehen wollte. Dieser Befehl bringt mir ja den "absoluten" Pfad am Server. Genau der interessiert mich für das nachfolgende ja schon mal gar nicht. Ich will die Pfadangabe ja, wie gesagt, relativ zum Aufrufverzeichnis. Wo sich nun wiederum dieses Verzeichnis am Server befindet interessiert mich hier mal überhaupt nicht. Da sich dieser absolute Pfad immer wieder mal von Server zu Server unterscheidetl. Lediglich der relative Pfad sollte ja immer gleich bleiben. Das Ding sollte nämlich letztendlich über Komprimierungsfunktionen im Endzustand eine Datensicherung durchführen. Da kann ich natürlich keine Absoluten Pfade in der komprimierten Datei brauchen, da ich dann die Datei nicht wieder einfach auf einem neuen Server entpacken kann, da die Pfadangaben dann nicht zusammenpassen.
Ich habe es nun mal mit dem "." als Pfadangabe probiert. Das scheint zu funktionieren, auch wenn es optisch nicht besonders toll aussieht.


Gruß

Thomas


Hier gehts zum Orginal Eintrag "Probleme mit rekursiver Funktion" im Forum
 
phpforum.de | Impressum | Handy Bundles