W3docs

ftp_rmdir()

Die PHP-Funktion ftp_rmdir() entfernt ein Verzeichnis auf einem FTP-Server. Erfahren Sie alles über Syntax, Parameter und Fehlerbehandlung.

Die PHP-Funktion ftp_rmdir() verstehen

Die ftp_rmdir()-Funktion ist eine eingebaute PHP-Funktion, die ein Verzeichnis auf einem FTP-Server entfernt. In diesem Artikel erläutern wir die Funktion im Detail und geben Ihnen einen umfassenden Leitfaden zur Verwendung in Ihren PHP-Projekten.

Was ist ftp_rmdir()?

Die ftp_rmdir()-Funktion entfernt ein Verzeichnis auf einem FTP-Server. Sie ist das Gegenstück zu ftp_mkdir(), das ein Verzeichnis erstellt.

Eine wichtige Einschränkung: Sie funktioniert nur mit leeren Verzeichnissen. Enthält das Verzeichnis noch Dateien oder Unterverzeichnisse, schlägt der Aufruf fehl und gibt false zurück. Um ein nicht-leeres Verzeichnis zu entfernen, müssen Sie zunächst dessen Inhalt löschen (siehe das rekursive Beispiel weiter unten).

Die Funktion erwartet zwei Parameter:

  1. ftp — die FTP-Verbindung, die von ftp_connect() zurückgegeben (und mit ftp_login() authentifiziert) wurde.
  2. directory — der Pfad des zu löschenden Verzeichnisses.

Bei Erfolg gibt sie true zurück, bei Fehler false.

Syntax von ftp_rmdir()

Die Signatur der ftp_rmdir()-Funktion lautet:

ftp_rmdir(FTP\Connection $ftp, string $directory): bool

Beide Parameter sind erforderlich. Beachten Sie, dass ab PHP 8.1 die Verbindung ein FTP\Connection-Objekt ist; vor PHP 8.1 war es eine resource. Der Parameter directory ist der Name (relativ zum aktuellen Verzeichnis) oder der absolute Pfad des zu entfernenden Verzeichnisses.

Verwendung von ftp_rmdir()

Um die ftp_rmdir()-Funktion zu verwenden, müssen Sie zunächst mit der Funktion ftp_connect() eine Verbindung zum FTP-Server herstellen. Hier ist ein vollständiges Beispiel:

<?php

// Set up an FTP connection
$conn = ftp_connect('ftp.example.com');
if (!$conn) {
    die("Could not connect to FTP server.");
}

// Login with your FTP credentials
if (!ftp_login($conn, 'username', 'password')) {
    die("Login failed.");
}

// Remove the directory
if (ftp_rmdir($conn, '/public_html/testdir')) {
    echo "Directory removed successfully.\n";
} else {
    echo "Directory removal failed. Ensure the directory is empty.\n";
}

// Close the FTP connection
ftp_close($conn);

Schritt für Schritt: Wir öffnen eine Verbindung mit ftp_connect() und überprüfen sie; melden uns mit ftp_login() an; entfernen das Verzeichnis mit ftp_rmdir() und berichten das Ergebnis; dann schließen wir die Verbindung mit ftp_close().

Ein nicht-leeres Verzeichnis rekursiv entfernen

Da ftp_rmdir() nicht-leere Verzeichnisse ablehnt, müssen beim Entfernen eines Verzeichnisbaums zunächst alle Dateien und Unterverzeichnisse gelöscht werden. Sie können den Inhalt mit ftp_nlist() auflisten, Dateien mit ftp_delete() löschen und rekursiv in Unterverzeichnisse wechseln:

<?php

function ftpRemoveTree($conn, string $dir): bool
{
    // ftp_delete handles files; ftp_rmdir handles (now-empty) directories.
    if (@ftp_delete($conn, $dir)) {
        return true;
    }

    // Not a file — assume it's a directory and clear its contents.
    $items = ftp_nlist($conn, $dir);
    if ($items === false) {
        return false;
    }

    foreach ($items as $item) {
        // Skip the "." and ".." entries some servers return.
        $name = basename($item);
        if ($name === '.' || $name === '..') {
            continue;
        }
        ftpRemoveTree($conn, $item);
    }

    // Directory is empty now, so it can be removed.
    return ftp_rmdir($conn, $dir);
}

Fehlerbehandlung in ftp_rmdir()

Bei der Verwendung von ftp_rmdir() ist eine sorgfältige Fehlerbehandlung wichtig. Ein Rückgabewert false bedeutet, dass das Entfernen fehlgeschlagen ist — meistens weil das Verzeichnis nicht leer ist, nicht existiert oder Ihrem Konto die Berechtigung fehlt. Überprüfen Sie stets den Rückgabewert, anstatt Erfolg vorauszusetzen:

<?php

if (!ftp_rmdir($conn, '/public_html/testdir')) {
    echo "Failed to remove directory. Ensure it is empty and you have proper permissions.\n";
}

ftp_close($conn);

Verwandte FTP-Funktionen

Fazit

Die ftp_rmdir()-Funktion entfernt ein leeres Verzeichnis auf einem FTP-Server und gibt bei Erfolg true und bei Fehler false zurück. Um ein Verzeichnis zu entfernen, das noch Dateien enthält, löschen Sie zunächst dessen Inhalt — beispielsweise mit dem rekursiven Hilfsprogramm von oben. Kombiniert mit sorgfältiger Überprüfung des Rückgabewerts ist sie ein zuverlässiger Baustein für die Verwaltung von Remote-Verzeichnisstrukturen aus PHP heraus.

Übung

Übung
Was ist der Zweck der FTP_RMDIR-Funktion in PHP?
Was ist der Zweck der FTP_RMDIR-Funktion in PHP?
Was this page helpful?