Start · Sprachen · PHP · Referenz · ftp_rename

ftp_rename

Funktion

Benennt eine Datei oder ein Verzeichnis auf dem FTP-Server um bzw. verschiebt es.

seit PHP 4.0.0 Kategorie: io

Signatur

ftp_rename(FTP\Connection $ftp, string $from, string $to): bool

Beschreibung

ftp_rename() sendet einen RNFR/RNTO-Befehl an den FTP-Server und benennt die unter $from angegebene Datei oder das Verzeichnis in $to um. Da dabei auch der Pfad geändert werden kann, lässt sich die Funktion gleichzeitig zum Verschieben von Dateien innerhalb des Servers verwenden.

Die Funktion arbeitet rein serverseitig – es werden keine Daten übertragen. Voraussetzung ist eine aktive FTP-Verbindung, die mit ftp_connect() und ftp_login() hergestellt wurde. Außerdem benötigt der angemeldete Benutzer auf dem Server ausreichende Schreibrechte für Quell- und Zielpfad.

Schlägt die Umbenennung fehl (z. B. weil die Quelldatei nicht existiert, das Ziel bereits vorhanden ist oder die Rechte fehlen), gibt die Funktion false zurück und löst eine PHP-Warnung aus. Im Erfolgsfall wird true zurückgegeben.

Für verschlüsselte Verbindungen kann statt ftp_connect() die Funktion ftp_ssl_connect() verwendet werden; ftp_rename() funktioniert mit beiden Verbindungstypen identisch.

Parameter

Name Typ Default Beschreibung
$ftp Pflicht FTP\Connection Eine aktive FTP-Verbindungsinstanz, wie sie von ftp_connect() oder ftp_ssl_connect() zurückgegeben wird. Vor PHP 8.1 war dies eine Ressource vom Typ resource.
$from Pflicht string Der aktuelle Pfad der Datei oder des Verzeichnisses auf dem FTP-Server, die umbenannt werden soll. Kann absolut (z. B. /var/www/datei.txt) oder relativ zum aktuellen Verzeichnis angegeben werden.
$to Pflicht string Der neue Pfad bzw. Name der Datei oder des Verzeichnisses auf dem FTP-Server. Enthält der Pfad ein anderes Verzeichnis als $from, wird die Datei effektiv verschoben.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Umbenennung erfolgreich war, andernfalls false. Im Fehlerfall wird zusätzlich eine PHP-Warnung ausgelöst.

Beispiele

Einfaches Umbenennen einer Datei auf dem FTP-Server

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

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

$altName = '/public_html/bericht_alt.txt';
$neuName = '/public_html/bericht_2024.txt';

if (ftp_rename($ftp, $altName, $neuName)) {
    echo 'Datei erfolgreich umbenannt.';
} else {
    echo 'Umbenennung fehlgeschlagen.';
}

ftp_close($ftp);
Datei erfolgreich umbenannt.

Datei in ein anderes Verzeichnis verschieben

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

// Datei von /uploads/ nach /archiv/ verschieben
$quelle = '/uploads/logo.png';
$ziel   = '/archiv/logo.png';

if (ftp_rename($ftp, $quelle, $ziel)) {
    echo 'Datei wurde erfolgreich verschoben.';
} else {
    echo 'Verschieben fehlgeschlagen – prüfe Pfade und Berechtigungen.';
}

ftp_close($ftp);
Datei wurde erfolgreich verschoben.

// Wichtig · Fallstricke

Rechte: Der FTP-Benutzer muss Schreibrechte sowohl im Quell- als auch im Zielverzeichnis besitzen. Fehlende Rechte führen zu einem FTP-Fehlercode (z. B. 550) und einem false-Rückgabewert.

Überschreiben: Viele FTP-Server erlauben kein Überschreiben einer bereits vorhandenen Zieldatei. In diesem Fall schlägt ftp_rename() fehl. Prüfe ggf. vorher mit ftp_nlist(), ob der Zielname bereits existiert.

PHP 8.1: Ab PHP 8.1 wird eine FTP\Connection-Objektinstanz erwartet; ältere Ressource-Werte sind nicht mehr kompatibel.

Fehlerbehandlung: Um die ausgelöste Warnung zu unterdrücken und selbst zu behandeln, kann dem Aufruf ein @-Operator vorangestellt oder ein eigener Fehler-Handler mit set_error_handler() registriert werden.