ftp_close()
Die Funktion ftp_close() ist eine in PHP integrierte Funktion, die eine FTP-Verbindung schließt. Sie nimmt eine Verbindungskennung entgegen.
Was ftp_close() bewirkt
ftp_close() schließt eine aktive FTP-Verbindung, die zuvor mit ftp_connect() (oder ftp_ssl_connect()) geöffnet wurde. Die Funktion gibt den Netzwerk-Socket und die serverseitige Sitzung frei, sodass keine Seite die Verbindung länger als nötig offen hält.
Sie rufen sie auf, sobald Sie die Dateiübertragung abgeschlossen haben – nach allen ftp_get()-, ftp_put()- oder ftp_nlist()-Operationen. Die Funktion gibt bei Erfolg true und bei Fehler false zurück.
PHP schließt die FTP-Verbindung automatisch, wenn das Skript endet, sodass ein vergessenes
ftp_close()keinen Socket dauerhaft offen lässt. Ein expliziter Aufruf ist dennoch wichtig in lang laufenden Skripten (Workers, Queue-Consumer, Schleifen, die viele Verbindungen öffnen), bei denen Sie die Serversitzung sofort freigeben möchten, anstatt auf das Ende des Skripts zu warten.
Syntax
ftp_close(FTP\Connection $ftp): bool| Parameter | Beschreibung |
|---|---|
$ftp | Das von ftp_connect() oder ftp_ssl_connect() zurückgegebene Verbindungs-Handle. |
Seit PHP 8.1 ist das Handle ein
FTP\Connection-Objekt. In PHP 8.0 und früher war es eineresource. Die Verwendung ist in beiden Versionen identisch — Sie inspizieren es nie direkt, sondern übergeben es lediglich an dieftp_*-Funktionen.
Grundlegende Verwendung
Ein vollständiger Zyklus aus Verbinden → Anmelden → Arbeiten → Schließen sieht so aus:
<?php
// Open a connection to the FTP server
$ftp = ftp_connect('ftp.example.com');
// Authenticate
ftp_login($ftp, 'username', 'password');
// Download a file
ftp_get($ftp, 'local-copy.txt', 'remote-file.txt', FTP_BINARY);
// Always close the connection when you are done
ftp_close($ftp);Die Grundidee: Jedes ftp_connect() sollte mit einem ftp_close() gepaart sein – genauso wie jede geöffnete Datei geschlossen werden sollte.
Den Rückgabewert prüfen
ftp_close() gibt einen boolean zurück, sodass Sie bestätigen können, dass die Verbindung sauber getrennt wurde:
<?php
if (ftp_close($ftp)) {
echo "Connection closed successfully.\n";
} else {
echo "Failed to close the connection.\n";
}Sicheres Schließen mit try/finally
Falls eine Operation zwischen dem Verbinden und dem Schließen eine Ausnahme wirft oder vorzeitig abbricht, wird die ftp_close()-Zeile möglicherweise nie ausgeführt. Das Einschließen der Arbeit in try/finally stellt sicher, dass die Verbindung auch bei einem Fehler geschlossen wird:
<?php
$ftp = ftp_connect('ftp.example.com');
try {
ftp_login($ftp, 'username', 'password');
ftp_get($ftp, 'local.txt', 'remote.txt', FTP_BINARY);
// ... more operations that might fail ...
} finally {
// Runs whether the try block succeeded or threw
ftp_close($ftp);
}Dies ist das empfohlene Muster für Produktionscode: Der finally-Block ist der einzige Ort, der für die Freigabe der Verbindung verantwortlich ist.
Häufige Fehler
- Das Handle nach dem Schließen verwenden. Sobald
ftp_close()ausgeführt wurde, ist das Handle ungültig. Jeder nachfolgendeftp_*-Aufruf damit schlägt fehl. - Ein ungültiges Handle übergeben. Wenn
ftp_connect()fehlschlägt, gibt esfalsezurück, keine Verbindung. Der Aufruf vonftp_close(false)löst in PHP 8 einenTypeErroraus. Prüfen Sie die Verbindung, bevor Sie sie verwenden. - Aufruf ohne Parameter.
ftp_close()erfordert das Verbindungs-Handle; es gibt keinen Standardwert.
Zusammenfassung
ftp_close() beendet eine mit ftp_connect() geöffnete FTP-Sitzung und gibt bei Erfolg true zurück. Obwohl PHP die Verbindung am Ende des Skripts schließt, hält ein expliziter Aufruf von ftp_close() – idealerweise innerhalb eines finally-Blocks – lang laufende Skripte ordentlich und gibt die Serversitzung sofort nach Abschluss der Arbeit frei. Weitere Informationen zum restlichen Workflow finden Sie unter ftp_connect(), ftp_login() und ftp_put().