Start · Sprachen · PHP · Referenz · ftp_delete

ftp_delete

Funktion

Löscht eine Datei auf dem FTP-Server über eine bestehende FTP-Verbindung.

seit PHP 4.0.0 Kategorie: io

Signatur

ftp_delete(FTP\Connection $ftp, string $filename): bool

Beschreibung

ftp_delete() entfernt die angegebene Datei auf dem entfernten FTP-Server. Die Funktion erwartet eine aktive FTP-Verbindungsressource sowie den vollständigen oder relativen Pfad zur Datei auf dem Server.

Die Funktion eignet sich zum programmatischen Aufräumen von temporären Dateien, veralteten Uploads oder automatisch generierten Dateien auf einem FTP-Server. Sie sollte nur für Dateien verwendet werden, nicht für Verzeichnisse — zum Löschen von Verzeichnissen steht ftp_rmdir() zur Verfügung.

Wichtig ist, dass der verbundene FTP-Benutzer über ausreichende Schreibrechte auf dem Zielverzeichnis verfügt. Fehlt das Recht oder existiert die Datei nicht, gibt die Funktion false zurück und erzeugt eine PHP-Warnung.

Ab PHP 8.1 ist der Typ des ersten Parameters FTP\Connection (ein Objekt); in älteren PHP-Versionen war es eine Ressource vom Typ resource.

Parameter

Name Typ Default Beschreibung
$ftp Pflicht FTP\Connection Eine aktive FTP-Verbindung, die mit ftp_connect() oder ftp_ssl_connect() erstellt und erfolgreich authentifiziert wurde.
$filename Pflicht string Der absolute oder relative Pfad zur Datei auf dem FTP-Server, die gelöscht werden soll. Beispiel: '/upload/temp/datei.txt'.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Datei erfolgreich gelöscht wurde, andernfalls false (z. B. wenn die Datei nicht existiert, keine Berechtigung vorhanden ist oder ein Verbindungsfehler auftritt).

Beispiele

Einfaches Löschen einer Datei auf dem FTP-Server

<?php
$ftp = ftp_connect('ftp.beispiel.de');

if (!$ftp) {
    die('Verbindung zum FTP-Server fehlgeschlagen.');
}

if (!ftp_login($ftp, 'benutzername', 'passwort')) {
    die('FTP-Anmeldung fehlgeschlagen.');
}

$dateiPfad = '/public_html/uploads/altedatei.txt';

if (ftp_delete($ftp, $dateiPfad)) {
    echo "Datei '{$dateiPfad}' erfolgreich gelöscht.";
} else {
    echo "Fehler: Datei konnte nicht gelöscht werden.";
}

ftp_close($ftp);
Datei '/public_html/uploads/altedatei.txt' erfolgreich gelöscht.

Mehrere temporäre Dateien automatisch löschen

<?php
$ftp = ftp_connect('ftp.beispiel.de');
ftp_login($ftp, 'benutzername', 'passwort');

// Liste der zu löschenden temporären Dateien
$tempDateien = [
    '/tmp/export_2024_01.csv',
    '/tmp/export_2024_02.csv',
    '/tmp/export_2024_03.csv',
];

$erfolgreich = 0;
$fehlgeschlagen = 0;

foreach ($tempDateien as $datei) {
    if (ftp_delete($ftp, $datei)) {
        echo "Gelöscht: {$datei}\n";
        $erfolgreich++;
    } else {
        echo "Fehler beim Löschen: {$datei}\n";
        $fehlgeschlagen++;
    }
}

echo "\nErgebnis: {$erfolgreich} gelöscht, {$fehlgeschlagen} fehlgeschlagen.";

ftp_close($ftp);
Gelöscht: /tmp/export_2024_01.csv Gelöscht: /tmp/export_2024_02.csv Gelöscht: /tmp/export_2024_03.csv Ergebnis: 3 gelöscht, 0 fehlgeschlagen.

// Wichtig · Fallstricke

Sicherheitshinweis: Übergeben Sie niemals benutzerseitig kontrollierte Eingaben direkt als filename-Parameter, ohne diese zuvor zu validieren. Ansonsten könnten Angreifer beliebige Dateien auf dem FTP-Server löschen (Path-Traversal-Angriff mit ../../-Sequenzen).

Berechtigungen: Der FTP-Benutzer muss Schreibrechte im betreffenden Verzeichnis besitzen. Fehlen diese, gibt die Funktion false zurück und erzeugt eine PHP-Warnung (E_WARNING).

Verzeichnisse: ftp_delete() kann ausschließlich Dateien löschen. Zum Entfernen leerer Verzeichnisse verwenden Sie ftp_rmdir().

Passive/aktive Modus: Falls Verbindungsprobleme auftreten, kann das Umschalten auf den passiven Modus mit ftp_pasv($ftp, true) helfen, bevor ftp_delete() aufgerufen wird.