Start · Sprachen · PHP · Referenz · ftp_systype

ftp_systype

Funktion

Gibt den Systemtyp (z. B. <code>UNIX</code> oder <code>Windows_NT</code>) des entfernten FTP-Servers zurück.

seit PHP 4.0.0 Kategorie: io

Signatur

ftp_systype(FTP\Connection $ftp): string|false

Beschreibung

ftp_systype() fragt den verbundenen FTP-Server nach seinem Systemtyp ab. Der Server antwortet dabei mit einer Zeichenkette, die das Betriebssystem oder die Systemfamilie identifiziert, z. B. UNIX, Windows_NT oder MACOS. Diese Information stammt aus der FTP-SYST-Kommandoantwort des Servers.

Der Rückgabewert kann genutzt werden, um das Verhalten von Dateioperationen anzupassen, beispielsweise wenn Pfadtrennzeichen oder Dateilistenformate betriebssystemabhängig ausgewertet werden müssen. So liefert ftp_rawlist() je nach Servertyp unterschiedliche Ausgabeformate.

Die Funktion eignet sich besonders zur Diagnose von FTP-Verbindungen sowie zur Entscheidungslogik in FTP-Clients, die mit heterogenen Serversystemen umgehen müssen. Bei einem Fehler – etwa wenn das SYST-Kommando vom Server nicht unterstützt wird – gibt die Funktion false zurück.

Parameter

Name Typ Default Beschreibung
$ftp Pflicht FTP\Connection Eine aktive FTP-Verbindungsinstanz, die zuvor mit ftp_connect() oder ftp_ssl_connect() erstellt und mit ftp_login() authentifiziert wurde.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Systemtyp des FTP-Servers als Zeichenkette zurück (z. B. UNIX oder Windows_NT). Bei einem Fehler oder wenn das SYST-Kommando nicht unterstützt wird, wird false zurückgegeben.

Beispiele

Systemtyp eines FTP-Servers ermitteln

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

if (!ftp_login($ftp, 'benutzername', 'passwort')) {
    die('Anmeldung fehlgeschlagen.');
}

$systemtyp = ftp_systype($ftp);
if ($systemtyp !== false) {
    echo 'Servertyp: ' . $systemtyp;
} else {
    echo 'Systemtyp konnte nicht ermittelt werden.';
}

ftp_close($ftp);
?>
Servertyp: UNIX

Pfadtrenner je nach Servertyp anpassen

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

$systemtyp = ftp_systype($ftp);

if ($systemtyp !== false) {
    // Auf Windows-Servern ggf. abweichendes Verhalten
    if (stripos($systemtyp, 'Windows') !== false) {
        echo 'Windows-FTP-Server erkannt – Pfadtrennzeichen: \\';
    } else {
        echo 'UNIX-artiger FTP-Server erkannt – Pfadtrennzeichen: /';
    }
} else {
    echo 'Systemtyp nicht verfügbar.';
}

ftp_close($ftp);
?>
UNIX-artiger FTP-Server erkannt – Pfadtrennzeichen: /

// Wichtig · Fallstricke

Nicht alle FTP-Server implementieren das SYST-Kommando. Manche Server antworten mit einer generischen oder absichtlich verschleierten Systembezeichnung aus Sicherheitsgründen, um keine Informationen über das Serverbetriebssystem preiszugeben.

Ab PHP 8.1 ist der Parameter ein Objekt vom Typ FTP\Connection; in älteren PHP-Versionen (vor 8.1) wurde eine Ressource vom Typ resource verwendet.