Signatur
Beschreibung
ftp_login() sendet die Anmeldedaten (Benutzername und Passwort) an einen FTP-Server, zu dem zuvor mit ftp_connect() oder ftp_ssl_connect() eine Verbindung hergestellt wurde. Erst nach erfolgreichem Login können Dateiverwaltungsoperationen wie Herunterladen, Hochladen oder Verzeichniswechsel durchgeführt werden.
Für öffentlich zugängliche FTP-Server kann als Benutzername anonymous und als Passwort eine E-Mail-Adresse (oft leer oder eine Dummy-Adresse) verwendet werden. Für gesicherte Server sind gültige Zugangsdaten erforderlich.
Schlägt der Login fehl – etwa durch falsche Zugangsdaten oder eine abgelehnte Verbindung – gibt die Funktion false zurück und löst eine PHP-Warnung aus. Es empfiehlt sich daher, den Rückgabewert stets zu prüfen und Fehler entsprechend zu behandeln.
Sicherheitshinweis: Standard-FTP überträgt Benutzername und Passwort im Klartext. Für produktive Umgebungen sollte stets ftp_ssl_connect() anstelle von ftp_connect() verwendet werden, um die Zugangsdaten verschlüsselt zu übertragen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ftp Pflicht | FTP\Connection | Eine FTP-Verbindungsressource, die zuvor mit ftp_connect() oder ftp_ssl_connect() erstellt wurde. Ab PHP 8.1 ist dies ein FTP\Connection-Objekt. |
|
| $username Pflicht | string | Der Benutzername für die Anmeldung am FTP-Server. Für anonyme FTP-Server wird häufig anonymous verwendet. |
|
| $password Pflicht | string | Das Passwort für den angegebenen Benutzernamen. Bei anonymem Zugang wird häufig eine (Dummy-)E-Mail-Adresse angegeben oder der String leer gelassen. |
Rückgabewert
true zurück, wenn der Login erfolgreich war, andernfalls false. Im Fehlerfall wird zusätzlich eine PHP-Warnung ausgelöst.Beispiele
Einfache FTP-Anmeldung mit Fehlerbehandlung
<?php
$host = 'ftp.example.com';
$username = 'mein_benutzer';
$password = 'geheimes_passwort';
// Verbindung zum FTP-Server herstellen
$ftp = ftp_connect($host, 21, 30);
if ($ftp === false) {
die('FTP-Verbindung konnte nicht hergestellt werden.');
}
// Login durchführen
if (!ftp_login($ftp, $username, $password)) {
ftp_close($ftp);
die('FTP-Login fehlgeschlagen.');
}
echo 'Erfolgreich als ' . $username . ' angemeldet.' . PHP_EOL;
// Aktuelles Verzeichnis ausgeben
$dir = ftp_pwd($ftp);
echo 'Aktuelles Verzeichnis: ' . $dir . PHP_EOL;
ftp_close($ftp);
Verschlüsselte FTP-Verbindung (FTPS) mit anonymem Login
<?php
$host = 'ftp.example.com';
// SSL-gesicherte FTP-Verbindung herstellen
$ftp = ftp_ssl_connect($host, 21, 30);
if ($ftp === false) {
die('SSL-FTP-Verbindung fehlgeschlagen.');
}
// Anonymer Login
if (ftp_login($ftp, 'anonymous', 'besucher@example.com')) {
echo 'Anonym angemeldet.' . PHP_EOL;
// Dateien im Root-Verzeichnis auflisten
$dateien = ftp_nlist($ftp, '.');
if ($dateien !== false) {
echo 'Dateien im Verzeichnis:' . PHP_EOL;
foreach ($dateien as $datei) {
echo ' - ' . $datei . PHP_EOL;
}
}
} else {
echo 'Anonymer Login nicht erlaubt.' . PHP_EOL;
}
ftp_close($ftp);
// Wichtig · Fallstricke
Klartext-Übertragung: Standard-FTP (ftp_connect()) sendet Zugangsdaten unverschlüsselt. In Produktivumgebungen immer ftp_ssl_connect() verwenden.
Passwörter nicht im Quellcode: Zugangsdaten niemals direkt im Code hinterlegen. Stattdessen Umgebungsvariablen ($_ENV) oder separate Konfigurationsdateien außerhalb des Webroot verwenden.
Fehler unterdrücken: Mit dem @-Operator (@ftp_login(...)) lässt sich die PHP-Warnung bei fehlgeschlagenem Login unterdrücken — dies sollte jedoch nur gezielt und mit eigener Fehlerbehandlung kombiniert werden.
PHP 8.1: Der erste Parameter ist kein resource mehr, sondern eine Instanz der Klasse FTP\Connection.