ftp_login()
Die PHP-Funktion ftp_login() meldet sich mit Benutzername und Passwort an einem FTP-Server an. Sie nimmt drei Parameter entgegen.
Die PHP-Funktion ftp_login() authentifiziert einen Benutzer gegenüber einem FTP-Server. Sie ist der zweite Schritt in nahezu jeder FTP-Sitzung: Zuerst öffnet man eine Verbindung mit ftp_connect(), dann ruft man ftp_login() auf, um sich zu identifizieren, bevor man Dateien auflisten, herunterladen oder hochladen kann. Diese Seite erklärt die Parameter, den Rückgabewert, den Umgang mit einem fehlgeschlagenen Login und die häufigsten Fallstricke (Passivmodus, sichere Verbindungen und sichere Verwaltung von Anmeldedaten).
Was ist ftp_login()?
ftp_login() ist eine eingebaute PHP-Funktion, die sich mit einem Benutzernamen und einem Passwort an einem FTP-Server anmeldet. Die Verbindung muss bereits geöffnet sein — ftp_login() stellt selbst keine Verbindung her; sie authentifiziert über ein bestehendes Verbindungs-Handle.
Die Funktion nimmt drei Parameter entgegen:
ftp— der Verbindungsbezeichner, der vonftp_connect()(oderftp_ssl_connect()) zurückgegeben wird.username— der Benutzername für die Anmeldung. Für anonyme FTP-Server wirdanonymousverwendet.password— das Passwort für die Anmeldung. Bei anonymen Anmeldungen ist eine E-Mail-Adresse üblich.
Die Funktion gibt einen boolean-Wert zurück: true bei einer erfolgreichen Anmeldung, false bei einem Fehler (falsche Anmeldedaten, ein Konto, das sich nicht anmelden darf, usw.).
Syntax von ftp_login()
ftp_login(FTP\Connection $ftp, string $username, string $password): boolHinweis: Vor PHP 8.1 war der erste Parameter eine
resource, die vonftp_connect()zurückgegeben wurde. Ab PHP 8.1 ist es einFTP\Connection-Objekt. Der aufrufende Code ändert sich nicht — nur der zugrunde liegende Typ.
Grundlegende Verwendung
Eine vollständige, korrekte Sitzung verbindet die Anmeldung stets mit einer Verbindungsherstellung und einem Schließen. Man beachte, dass der Rückgabewert von ftp_connect() geprüft wird, bevor ftp_login() überhaupt versucht wird, da eine Anmeldung gegen false einen TypeError auslösen würde.
<?php
// 1. Open a connection (returns false on failure)
$conn = ftp_connect('ftp.example.com');
if ($conn === false) {
exit("Could not connect to the FTP server.\n");
}
// 2. Authenticate
if (ftp_login($conn, 'username', 'password')) {
echo "Logged in successfully.\n";
// ... work with files here ...
} else {
echo "Login failed: check the username and password.\n";
}
// 3. Always close the connection when finished
ftp_close($conn);Die drei Aufrufe — Verbinden, Anmelden, Schließen — rahmen jede FTP-Aufgabe ein. Siehe ftp_close(), warum die Freigabe des Handles wichtig ist.
Fehlerbehandlung in ftp_login()
ftp_login() gibt bei einer fehlgeschlagenen Anmeldung false zurück, gibt aber auch eine PHP-Warnung aus. In der Produktion möchte man diese Warnung in der Regel unterdrücken und selbst entscheiden, was zu tun ist. Verwenden Sie den @-Operator, um die Warnung zu unterdrücken, und verzweigen Sie anhand des Rückgabewerts:
<?php
$conn = ftp_connect('ftp.example.com');
if ($conn === false) {
echo "Login failed.\n";
} elseif (@ftp_login($conn, 'username', 'wrong-password') === false) {
echo "Login failed.\n";
} else {
echo "Login successful.\n";
}Bei einem nicht erreichbaren Host oder falschen Anmeldedaten gibt dies Login failed. aus, anstatt zu abstürzen oder eine rohe Warnung auf der Seite preiszugeben.
Passivmodus und sichere Anmeldungen
Zwei Probleme treten häufig nach einer erfolgreichen Anmeldung auf:
- Passivmodus. Viele Server (und die meisten NAT/Firewall-Konfigurationen) erfordern für Datenübertragungen wie Verzeichnisauflistungen und Downloads den Passiv-Modus. Aktivieren Sie ihn mit
ftp_pasv()— aber nur nach dem Erfolg vonftp_login(), niemals davor. - Verschlüsselung. Einfaches FTP überträgt Benutzername und Passwort im Klartext. Bevorzugen Sie FTP über SSL/TLS, indem Sie die Verbindung mit
ftp_ssl_connect()öffnen;ftp_login()funktioniert dann auf genau die gleiche Weise.
<?php
$conn = ftp_ssl_connect('ftp.example.com'); // encrypted control channel
if ($conn && ftp_login($conn, 'username', 'password')) {
ftp_pasv($conn, true); // enable passive mode after login
// ... transfer files ...
ftp_close($conn);
}Häufige Fallstricke
- Niemals Anmeldedaten hartcodieren, die Sie committen. Lesen Sie sie aus Umgebungsvariablen oder einer Konfigurationsdatei, die nicht der Versionskontrolle unterliegt.
ftp_login()stellt keine Verbindung her. Wenn Sie einen Hostnamen-String statt eines Verbindungs-Handles übergeben, erhalten Sie einenTypeError. Rufen Sie immer zuerstftp_connect()auf.- Ein
true-Rückgabewert bedeutet nur, dass die Authentifizierung erfolgreich war. Er sagt nichts über Berechtigungen aus — ein späterer Upload kann trotzdem fehlschlagen, wenn das Konto keinen Schreibzugriff hat.
Fazit
ftp_login() authentifiziert eine offene FTP-Verbindung mit Benutzername und Passwort und gibt true oder false zurück. Stellen Sie immer zuerst eine Verbindung her, prüfen Sie den Rückgabewert, aktivieren Sie den Passivmodus nach der Anmeldung wenn nötig, und bevorzugen Sie in der Produktion eine verschlüsselte Verbindung. Den vollständigen Satz verwandter Funktionen finden Sie in der PHP FTP-Referenz.