Signatur
Beschreibung
ftp_get_option() ermöglicht das Abfragen einzelner Konfigurationsoptionen einer aktiven FTP-Verbindung. Die zurückgegebenen Werte spiegeln den aktuellen Zustand der Verbindung wider und können zuvor mit ftp_set_option() gesetzt worden sein oder den Standard-Voreinstellungen entsprechen.
Typische Anwendungsfälle sind das Auslesen des aktuell gesetzten Timeouts, bevor eine langwierige Übertragung gestartet wird, oder das Prüfen, ob Autoseek aktiviert ist. So lassen sich dynamische Anpassungen im Programmablauf realisieren, ohne die Verbindung neu aufbauen zu müssen.
Unterstützte Optionen sind: FTP_TIMEOUT_SEC (der Verbindungs-Timeout in Sekunden), FTP_AUTOSEEK (ob automatisches Suchen bei resumepos-Angaben aktiv ist) sowie ab PHP 7.3 FTP_USEPASVADDRESS (ob die vom Server in der PASV-Antwort gelieferte IP-Adresse verwendet wird). Bei einer unbekannten Option wird false zurückgegeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ftp Pflicht | FTP\Connection | Eine gültige FTP-Verbindungsinstanz, die von ftp_connect() oder ftp_ssl_connect() zurückgegeben wurde. Vor PHP 8.1 war dies eine Ressource vom Typ resource. |
|
| $option Pflicht | int | Die abzufragende Option als Konstante. Gültige Werte: FTP_TIMEOUT_SEC, FTP_AUTOSEEK oder (ab PHP 7.3) FTP_USEPASVADDRESS. |
Rückgabewert
FTP_TIMEOUT_SEC eine Ganzzahl (Sekunden), bei FTP_AUTOSEEK und FTP_USEPASVADDRESS einen booleschen Wert. Ist die Option unbekannt oder ungültig, wird false zurückgegeben und eine PHP-Warnung ausgelöst.Beispiele
Aktuellen Timeout einer FTP-Verbindung auslesen
<?php
$ftp = ftp_connect('ftp.example.com');
if ($ftp === false) {
die('Verbindung fehlgeschlagen');
}
$timeout = ftp_get_option($ftp, FTP_TIMEOUT_SEC);
echo 'Aktueller FTP-Timeout: ' . $timeout . ' Sekunden' . PHP_EOL;
ftp_close($ftp);
Autoseek-Status prüfen und bedingt aktivieren
<?php
$ftp = ftp_connect('ftp.example.com');
if ($ftp === false) {
die('Verbindung fehlgeschlagen');
}
ftp_login($ftp, 'benutzer', 'geheim');
$autoseek = ftp_get_option($ftp, FTP_AUTOSEEK);
if ($autoseek === false) {
echo 'Autoseek ist deaktiviert — wird aktiviert...' . PHP_EOL;
ftp_set_option($ftp, FTP_AUTOSEEK, true);
} else {
echo 'Autoseek ist bereits aktiv.' . PHP_EOL;
}
ftp_close($ftp);
PASV-Adresse-Option prüfen (PHP 7.3+)
<?php
$ftp = ftp_connect('ftp.example.com');
if ($ftp === false) {
die('Verbindung fehlgeschlagen');
}
ftp_login($ftp, 'benutzer', 'geheim');
$usePassvAddr = ftp_get_option($ftp, FTP_USEPASVADDRESS);
echo 'PASV-Adresse des Servers verwenden: ' . ($usePassvAddr ? 'Ja' : 'Nein') . PHP_EOL;
// Hinter einem NAT-Router oft auf false setzen:
if ($usePassvAddr) {
ftp_set_option($ftp, FTP_USEPASVADDRESS, false);
echo 'Option wurde deaktiviert (NAT-Umgebung).' . PHP_EOL;
}
ftp_close($ftp);
// Wichtig · Fallstricke
PHP-Versionen: Ab PHP 8.1 ist der erste Parameter vom Typ FTP\Connection; in früheren Versionen war es eine resource. Code sollte entsprechend angepasst werden, wenn Kompatibilität zu älteren PHP-Versionen gefordert ist.
Unbekannte Optionen: Wird eine nicht unterstützte Konstante übergeben, gibt die Funktion false zurück und löst eine E_WARNING-Meldung aus. Da false auch ein gültiger Wert für boolesche Optionen ist, sollte der Rückgabewert stets mit === false (strikter Vergleich) geprüft werden, um Mehrdeutigkeiten zu vermeiden.
FTP_USEPASVADDRESS steht erst ab PHP 7.3 zur Verfügung. In NAT-Umgebungen oder hinter Firewalls kann das Deaktivieren dieser Option notwendig sein, damit passive Datenverbindungen korrekt aufgebaut werden.