Start · Sprachen · PHP · Referenz · ftp_cdup

ftp_cdup

Funktion

Wechselt auf dem FTP-Server in das übergeordnete Verzeichnis (entspricht dem Befehl <code>CDUP</code>).

seit PHP 4.0.0 Kategorie: io

Signatur

ftp_cdup(FTP\Connection $ftp): bool

Beschreibung

ftp_cdup() sendet den FTP-Befehl CDUP an den verbundenen Server und wechselt damit vom aktuellen Arbeitsverzeichnis in das jeweils übergeordnete Verzeichnis. Das Verhalten entspricht dem Befehl cd .. in einer Shell.

Die Funktion ist nützlich, wenn man nach dem Bearbeiten eines Unterverzeichnisses wieder zur übergeordneten Ebene zurückkehren möchte, ohne den vollständigen Pfad mit ftp_chdir() angeben zu müssen. Sie ist damit besonders praktisch beim rekursiven Traversieren einer Verzeichnisstruktur auf dem FTP-Server.

Beachte, dass das Wechseln des Verzeichnisses über das Wurzelverzeichnis hinaus serverseitig unterschiedlich behandelt werden kann – viele Server geben in diesem Fall trotzdem true zurück, bleiben aber im Wurzelverzeichnis.

Parameter

Name Typ Default Beschreibung
$ftp Pflicht FTP\Connection Eine aktive FTP-Verbindungsinstanz, die zuvor mit ftp_connect() oder ftp_ssl_connect() erstellt und mit ftp_login() authentifiziert wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Verzeichniswechsel erfolgreich war, andernfalls false.

Beispiele

In das übergeordnete Verzeichnis wechseln

<?php
$ftp = ftp_connect('ftp.example.com');
if ($ftp === false) {
    die('Verbindung fehlgeschlagen.');
}

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

// In ein Unterverzeichnis wechseln
ftp_chdir($ftp, '/public_html/bilder/thumbnails');
echo 'Aktuelles Verzeichnis: ' . ftp_pwd($ftp) . PHP_EOL;

// Eine Ebene nach oben wechseln
if (ftp_cdup($ftp)) {
    echo 'Neues Verzeichnis: ' . ftp_pwd($ftp) . PHP_EOL;
} else {
    echo 'Verzeichniswechsel fehlgeschlagen.' . PHP_EOL;
}

ftp_close($ftp);
?>
Aktuelles Verzeichnis: /public_html/bilder/thumbnails Neues Verzeichnis: /public_html/bilder

Rekursives Traversieren mit ftp_cdup

<?php
$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'benutzer', 'passwort');

$verzeichnisse = ['unterordner1', 'unterordner2', 'unterordner3'];

foreach ($verzeichnisse as $dir) {
    if (ftp_chdir($ftp, $dir)) {
        echo 'Verzeichnis: ' . ftp_pwd($ftp) . PHP_EOL;
        $dateien = ftp_nlist($ftp, '.');
        echo 'Dateien: ' . implode(', ', $dateien ?: []) . PHP_EOL;
        // Zurück zum Ausgangsverzeichnis
        ftp_cdup($ftp);
    } else {
        echo "Konnte nicht in '$dir' wechseln." . PHP_EOL;
    }
}

ftp_close($ftp);
?>

// Wichtig · Fallstricke

Vorsicht bei verschachtelten Aufrufen: Wenn du mehrfach in Unterverzeichnisse wechselst, musst du ftp_cdup() entsprechend oft aufrufen, um wieder zum Ausgangspunkt zu gelangen. Alternativ kannst du das Ausgangsverzeichnis mit ftp_pwd() speichern und später mit ftp_chdir() direkt dorthin zurückkehren.

PHP-Version: Ab PHP 8.1.0 ist der Parametertyp FTP\Connection ein echtes Objekt. In älteren PHP-Versionen (vor 8.1) wurde stattdessen eine Ressource (resource) übergeben.