Bert: Verzeichniss erstellen, wenn noch nicht vorhanden

Guten Tag!
Ich will auf meinem ftp-server per php, ein Verzeichniss, wenn es noch nicht besteht, erstellen und in dieses wechseln.

Bis jetzt hab ich diesen "umständlichen" code gebastelt:

$chdir2 = ftp_chdir ($connection_id, $datum);
  If (!$chdir2){
     $mkdir2 = ftp_mkdir ($connection_id, $datum);
     $chdir2 = ftp_chdir ($connection_id, $datum);}

Es klappt zwar, aber gibt immer eine Fehlermeldung aus, wenn das Verzeichniss noch nicht existiert:

Warning: ftp_chdir(): Directory does not exist. in /hp/ab/ab/kk/www/files/test.php on line 22

Wie kann man das ohne Fehlermeldung machen?
und kann man den Code noch kürzen?

Vielen Dank
Bert

  1. hi,

    Wie kann man das ohne Fehlermeldung machen?

    Ein @ vor dem Befehl sollte die Warnung unterdrücken.

    und kann man den Code noch kürzen?

    Verzeichnis einfach ohne Prüfung anzulegen versuchen?
    Sollte dann zwar auch eine analoge Warnmeldung produzieren, wenn es bereits existiert - aber das dürfte es wohl auch gewesen sein.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Wie kann man das ohne Fehlermeldung machen?

    Unterdrücke die Fehlermeldung mit einem @ vor dem , was die fehlermeldung erzeugt. Beispiel:

    echo file_get_contents( $_GET['foo']);

    würde einen notice-fehler bringen, wenn 'foo' in $_GET nicht gesetzt ist. zusätzlich natürlich, dass das file nicht existiert.

    echo file_get_contents( @$_GET['foo']);

    damit wird der notice-fehler unterdrückt, dass das file nicht existiert wird aber noch immer angezeigt. Mit

    echo @file_get_contents( $_GET['foo']);

    werden beide fehler-nachrichten unterdrückt ;)

    Kleine Warnung: Lass das @ nicht zur gewohnheit werden. Benutze es nur, wo auch wirklich Fehler angezeigt werden, die auch tatsächlich welche sind. Ansonsten machst du es dir unnötig schwer, wenn du tatsächlich auf Fehlersuche bist. Benutze es also nur in wirklichen ausnahmefällen.

    und kann man den Code noch kürzen?

    wenn du php5 benutzt, mach das am besten mit stream-wrappern:
    http://de3.php.net/manual/en/wrappers.ftp.php

    ist portabler, da du nicht auf ftp beschränkt bist, sondern dateisysteme allgemein betrachtest. mit streams dann so:

    $dir = 'ftp://host/verzeichniss/';
      if( ! is_dir( $dir)) {
        mkdir( $dir, 0755);
      }

    in das verzeichniss weckseln entfällt hierbei natürlich. viele andere filesystem-funktionen werden unterstützt.

    selbst wenn du 'nur' php4 benutzt, solltest du dir überlegen das mit stream-wrappern zu imlementieren, da es eben portabler ist und vor allem: Schneller.

    Gruss, piere.