Start · Sprachen · PHP · Referenz · ftp_get_option

ftp_get_option

Funktion

Liest eine Laufzeitoption (z. B. Timeout oder passive Adresse) einer bestehenden FTP-Verbindung aus.

seit PHP 4.2.0 Kategorie: io

Signatur

ftp_get_option(FTP\Connection $ftp, int $option): int|bool

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

Typ
int|bool
Beschreibung
Gibt den aktuellen Wert der angeforderten Option zurück — bei 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);
Aktueller FTP-Timeout: 90 Sekunden

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);
Autoseek ist bereits aktiv.

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);
PASV-Adresse des Servers verwenden: Ja Option wurde deaktiviert (NAT-Umgebung).

// 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.