Start · Sprachen · PHP · Referenz · ftp_close

ftp_close

Funktion

Schließt eine bestehende FTP-Verbindung und gibt alle damit verbundenen Ressourcen frei.

seit PHP 4.0.0 Kategorie: io

Signatur

ftp_close(FTP\Connection $ftp): bool

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

Typ
bool
Beschreibung
Gibt 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;
?>
Erfolgreich verbunden. datei1.txt datei2.txt Verbindung geschlossen.

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;
}
?>
Datei erfolgreich hochgeladen. FTP-Verbindung beendet.

// 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.