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