FTP - Ordner erstellen, aber vorher prüfen ob er schon vorhanden ist?

chris4712

Erfahrenes Mitglied
Hallo!

Ich wollte via FTP einen Ordner erstellen. Damit es nicht zu einer PHP Fehlermeldung kommt, falls schon ein Ordner mit gleichen Namen vorhanden ist, wollte ich den Fehler abfragen.
Auf meinem Server (Windows) läuft es prima. Bei 1&1 nicht :(

Mein Code lautet:
PHP:
if (@ftp_mkdir($conn_id, $NewFolder)) {
echo "Verzeichnis nicht vorhanden.";
}  else {
echo "Verzeichnis vorhanden.";
}

Ordner wird wunderbar erstellt.
Wenn ich dann aber versuche noch einen Ordner mit diesem Namen zu erstellen kommt nicht "Verzeichnis vorhanden." sondern gleich
Code:
_mkdir() function.ftp-mkdir: a: File exists.
Fehler in /cms/functions/cms/ajax/mkdir.php Zeile 31
Wie kann ich den Fehler noch versuchen abzufangen?

Grüße!
 
geht is_dir() auf ein FTP-Zugriff?

Mit LIST alles im Verzeichnis ausgeben und kontrollieren ob das Ding schon vorhanden ist?

PHP:
//TODO: $NewFolder in $parentPath und $folderName aufsplitten
$items = ftp_nlist($conn_id, $parentPath)
if(in_array($folderName, $items){
    //TODO: Ordner besteht bereits
} else {
    //TODO: Ordner neu erstellen
}
 
Also is_dir geht meines Wissens nach NUR beim lokalen Dateizugriff. Nicht über FTP.

Die Lösung von Yaslaw gefällt mir zwar nicht ganz so, aber ich fürchte dass es echt die einzige Möglichkeit bei 1&1 ist.
Oder bietet mir jemand Anderes noch eine Alternative?
Genauso kompliziert wird es ja dann auch beim Löschen von Verzeichnissen, wenn diese noch nicht leer sind.

Grüße!
 
Dann mach einfach eine Funktion draus, die du mehrfach anwenden kannst
PHP:
public function ftp_item_exists($conn, $path, $itemName){
    $items = ftp_nlist($conn, $path)
    return in_array($itemName, $items);
}
 
Zurück