Facebook
Twitter
Google+
Kommentare
4

Verzeichnispfad (rekursiv) erstellen

Unglaublich, aber es ist schon wieder Sonntag. Naja eigentlich ist es jetzt gerade Samstag Abend, aber wenn ihr es lest, ist Sonntag. Klingt konfuser, als das was ich sonst so rede oder?

Der heutige Artikel wird einige von euch vielleicht nicht vom Hocker hauen, aber wie meistens Sonntags gibt es Easy-Readening. Aber ich darf hier gar nicht so rumtönen, denn ich habe bis Ende der Woche auch nicht gewusst, wie man am einfachsten ein Verzeichnis mit PHP erstellt, in einem Unterverzeichnis, das bis jetzt auch noch nicht existiert.

Mein erster Ansatz wäre wie folgt gewesen. Nehme den zu erstellenden Pfad, wende ein explode drauf an und hole so die einzelnen Verzeichnisse raus. Darüber wird jetzt iteriert und jedes Verzeichnis, das nicht existiert wird erstellt. Und voilá die Funktion ist fertig. Und so habe ich das auch programmiert. Dabei hätte ich doch einfach mal in die Syntax der mkdir Befehls von php genauer unter die Lupe nehmen sollen. Dabei gibt es noch ein kleines WTF kostenlos dazu. Auf der deutschen php.net Seite hat mkdir genau zwei Parameter, den Pfadnamen und den Rechtemodus, den die neuen Dirs bekommen sollen. Wechselt man auf die englische Seite, so hat der Befehl auf einmal vier. Und der dritte davon ist das „recursive flag“. Hiermit bestimmt man, wie PHP in einem solchem Fall reagieren soll. Setzt man es auf true so werden alle benötigten Verzeichnisse erstellt, ansonsten eben nicht.
Ich weiß, ich sollte mich nicht über eine Dokumentation aufregen, die von freiwilligen erstellt wurde. Ich mach’s aber trotzdem. Schon alleine, weil es so Spaß macht.

Ach was man noch dazu sagen sollte. Diese Funktion gibt es erst seit PHP5. Alle anderen sollten sich an meinen oben beschriebenen Algorithmus halten. Obwohl ich mir ja „sicher“ bin hier keine PHP4 Nutzer unter den Lesern zu haben.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

4 Comments

  1. Ach, halb so wild .. ich könnt mich da eher über die Reihenfolge von Needle/Haystack aufregen .. weil, merken lässt sich’s einfach nicht! :/

    Lustiger fand ich damals bei der ZCE-Vorbereitung, dass man auf einmal Funktionen entdeckt, die’s schon seit PHP3 bzw den Anfängen von PHP4 gibt und die ich bisher noch nicht ansatzweise vermisst habe – das hat mir schon irgendwie zu denken gegeben *g

    Gruss
    Steffkes

    Reply
  2. Hi,

    alle, die mit mit der vorgeschlagenen Lösung

    >> $dirs = explode( ‚/‘, $path );

    das Problem lösen möchten, möchte ich darauf aufmerksam machen, dass es bei Linux auch Pfade mit Front-Slashes geben kann:

    $path = ‚/home/timo/my\/path‘;

    Nicht schön aber selten! Da man hier natürlich nicht das Verzeichnis „/home/timo/my\“ erzeugen möchte, ist etwas mehr Vorsicht geboten.

    Vielleicht mit einer Regular Expression, die nur Front-Slashes ohne vorangehnde Back-Slashes findet? Es gibt immer Spezialfälle, an die man denken sollte.

    Sprich: Schaut, dass ihr auf eine aktuelle PHP-Version aktualisiert. Hat noch 1000 andere Vorteile 🙂

    Reply
  3. Hier kann man dann aber auch vom PHP „define“ profitieren, der da heißt DIRECTORY_SEPARATOR. Sollte man eh verwenden, denke ich doch mal.

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen