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:
ftp— die FTP-Verbindung, die vonftp_connect()zurückgegeben (und mitftp_login()authentifiziert) wurde.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): boolBeide 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
ftp_mkdir()— ein Verzeichnis erstellen.ftp_delete()— eine einzelne Datei löschen.ftp_nlist()— den Inhalt eines Verzeichnisses auflisten.ftp_chdir()— das aktuelle Arbeitsverzeichnis wechseln.ftp_pwd()— den aktuellen Verzeichnispfad abrufen.
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.