Signatur
Beschreibung
ftp_close() beendet eine aktive FTP-Verbindung, die zuvor mit ftp_connect() oder ftp_ssl_connect() geöffnet wurde. Die Verbindung wird ordnungsgemäß zum Server hin geschlossen und das zugehörige FTP\Connection-Objekt (vor PHP 8.1 eine Ressource) wird ungültig.
Es ist eine gute Praxis, ftp_close() am Ende eines FTP-Dateitransfers oder einer FTP-Session explizit aufzurufen, um Server-seitige Ressourcen freizugeben und die Verbindung sauber zu beenden – auch wenn PHP die Verbindung beim Skriptende automatisch schließt.
Nach dem Aufruf von ftp_close() sollte das zugehörige Connection-Objekt nicht mehr verwendet werden, da alle weiteren Operationen darauf fehlschlagen werden. Wenn mehrere FTP-Verbindungen gleichzeitig geöffnet sind, schließt ftp_close() immer nur genau die übergebene Verbindung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ftp Pflicht | FTP\Connection | Ein FTP\Connection-Objekt (ab PHP 8.1), das von ftp_connect() oder ftp_ssl_connect() zurückgegeben wurde. In PHP < 8.1 war dies eine resource. |
Rückgabewert
true zurück, wenn die Verbindung erfolgreich geschlossen wurde, oder false bei einem Fehler (z. B. wenn die übergebene Verbindung ungültig ist).Beispiele
Einfache FTP-Verbindung öffnen und schließen
<?php
$ftp = ftp_connect('ftp.example.com');
if ($ftp === false) {
die('Verbindung fehlgeschlagen.');
}
if (!ftp_login($ftp, 'benutzername', 'passwort')) {
ftp_close($ftp);
die('Anmeldung fehlgeschlagen.');
}
echo 'Erfolgreich verbunden.' . PHP_EOL;
// FTP-Operationen durchführen ...
$files = ftp_nlist($ftp, '.');
foreach ($files as $file) {
echo $file . PHP_EOL;
}
// Verbindung sauber schließen
ftp_close($ftp);
echo 'Verbindung geschlossen.' . PHP_EOL;
?>
FTP-Dateiupload mit anschließendem Schließen der Verbindung
<?php
$ftp = ftp_connect('ftp.example.com');
if ($ftp === false) {
die('Verbindung fehlgeschlagen.');
}
try {
if (!ftp_login($ftp, 'benutzername', 'passwort')) {
throw new RuntimeException('Anmeldung fehlgeschlagen.');
}
ftp_pasv($ftp, true); // Passivmodus aktivieren
$lokale_datei = '/var/www/uploads/bericht.pdf';
$remote_datei = '/public_html/bericht.pdf';
if (!ftp_put($ftp, $remote_datei, $lokale_datei, FTP_BINARY)) {
throw new RuntimeException('Dateiübertragung fehlgeschlagen.');
}
echo 'Datei erfolgreich hochgeladen.' . PHP_EOL;
} catch (RuntimeException $e) {
echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
} finally {
// Verbindung in jedem Fall schließen
ftp_close($ftp);
echo 'FTP-Verbindung beendet.' . PHP_EOL;
}
?>
// Wichtig · Fallstricke
Alias: ftp_close() ist ein Alias von ftp_quit(). Beide Funktionen sind funktional identisch. Es empfiehlt sich, ftp_close() zu verwenden, da der Name die Absicht klarer ausdrückt.
Ressourcen freigeben: Obwohl PHP am Skriptende alle offenen Verbindungen automatisch schließt, sollte ftp_close() in lang laufenden Skripten oder bei mehreren sequenziellen FTP-Verbindungen explizit aufgerufen werden, um Verbindungslimits auf dem FTP-Server nicht zu erschöpfen.
Sicherheit: FTP überträgt Zugangsdaten und Daten im Klartext. Für sichere Übertragungen sollte ftp_ssl_connect() (FTPS) oder alternativ SFTP über die SSH2-Extension verwendet werden.