Start · Sprachen · PHP · Referenz · php_uname

php_uname

Funktion

Gibt Informationen über das Betriebssystem zurück, auf dem PHP läuft.

seit PHP 4.0.2 Kategorie: misc

Signatur

php_uname(string $mode = 'a'): string

Beschreibung

php_uname() liefert Details über das Betriebssystem, auf dem PHP ausgeführt wird – ähnlich dem Unix-Kommando uname. Mit dem Parameter $mode lässt sich gezielt steuern, welche Information zurückgegeben wird: Systemname, Hostname, Release, Version oder Maschinentyp.

Die Funktion ist nützlich, um plattformspezifisches Verhalten im Code abzufangen, Systemdiagnosen zu erstellen oder Debugging-Informationen zu loggen. Typische Anwendungsfälle sind etwa das Prüfen des Betriebssystemtyps (Windows vs. Linux) oder das Ermitteln des Hostnamens.

Zu beachten ist, dass php_uname() – im Gegensatz zu PHP_OS – Informationen über das aktuell laufende System zurückgibt. Bei PHP im Safe Mode oder bestimmten Hosting-Umgebungen kann die Ausgabe eingeschränkt sein und stattdessen nur generische Betriebssysteminformationen liefern.

  • 'a' – Alle Informationen kombiniert (Standard)
  • 's' – Betriebssystemname (z. B. Linux, Windows NT)
  • 'n' – Hostname des Systems
  • 'r' – Release-Version (z. B. 5.15.0-76-generic)
  • 'v' – Versions-Information
  • 'm' – Maschinentyp (z. B. x86_64)

Parameter

Name Typ Default Beschreibung
$mode string 'a' Einzelnes Zeichen, das bestimmt, welche Information zurückgegeben wird: 'a' (alle), 's' (Systemname), 'n' (Hostname), 'r' (Release), 'v' (Version), 'm' (Maschinentyp).

Rückgabewert

Typ
string
Beschreibung
Gibt einen String mit den angeforderten Betriebssystem-Informationen zurück. Bei Modus 'a' werden alle Informationen in einem einzigen String kombiniert zurückgegeben.

Beispiele

Alle Systeminformationen auf einmal ausgeben

<?php
// Gibt alle Systeminformationen zurück (Standard-Modus 'a')
$info = php_uname();
echo $info;
// Beispiel-Ausgabe unter Linux:
// Linux webserver 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64
Linux webserver 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64

Betriebssystem erkennen und plattformspezifischen Code ausführen

<?php
// Nur den Betriebssystem-Namen ermitteln
$os = php_uname('s');

if (stripos($os, 'windows') !== false) {
    echo "Windows-System erkannt: " . $os . PHP_EOL;
    // Windows-spezifische Logik...
} else {
    echo "Nicht-Windows-System erkannt: " . $os . PHP_EOL;
    // Linux/macOS-spezifische Logik...
}

// Hostname und Maschinentyp ausgeben
echo "Hostname: " . php_uname('n') . PHP_EOL;
echo "Maschinentyp: " . php_uname('m') . PHP_EOL;
Nicht-Windows-System erkannt: Linux Hostname: webserver Maschinentyp: x86_64

Systeminformationen für Diagnose-Log erfassen

<?php
// Detaillierte Systeminformation für ein Diagnose-Log zusammenstellen
function getSystemDiagnostics(): array {
    return [
        'os_name'    => php_uname('s'),
        'hostname'   => php_uname('n'),
        'os_release' => php_uname('r'),
        'os_version' => php_uname('v'),
        'machine'    => php_uname('m'),
        'php_version'=> PHP_VERSION,
    ];
}

$diag = getSystemDiagnostics();
foreach ($diag as $key => $value) {
    echo str_pad($key, 15) . ': ' . $value . PHP_EOL;
}
os_name : Linux hostname : webserver os_release : 5.15.0-76-generic os_version : #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 machine : x86_64 php_version : 8.2.7

// Wichtig · Fallstricke

Sicherheitshinweis: Die Ausgabe von php_uname() sollte niemals ungefiltert an Endnutzer ausgegeben werden, da sie interne Systeminformationen (Hostnamen, Kernel-Version, Architektur) preisgibt, die für Angreifer nützlich sein können. Systemdiagnosen sollten ausschließlich in internen Logs oder passwortgeschützten Admin-Bereichen erscheinen.

In älteren PHP-Versionen mit aktiviertem Safe Mode gibt php_uname() lediglich den Betriebssystemtyp zurück, auf dem PHP kompiliert wurde – nicht unbedingt das tatsächlich laufende System. Ab PHP 5.3.0 wurde der Safe Mode entfernt.

Eine Alternative für den reinen Betriebssystemtyp (ohne Safe-Mode-Einschränkungen) ist die Konstante PHP_OS (Betriebssystem, auf dem PHP kompiliert wurde) bzw. PHP_OS_FAMILY (ab PHP 7.2, liefert z. B. 'Windows', 'Linux', 'Darwin').