Signatur
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
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);
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);
// 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.