Start · Sprachen · PHP · Referenz · posix_uname

posix_uname

Funktion

Gibt ein assoziatives Array mit Informationen über das Betriebssystem zurück (Systemname, Hostname, Version, Release, Maschinentyp).

seit PHP 4.0.0 Kategorie: misc

Signatur

posix_uname(): array|false

Beschreibung

posix_uname() ruft systeminterne Informationen über das aktuelle Betriebssystem ab und gibt sie als assoziatives Array zurück. Die Funktion entspricht dem POSIX-uname()-Systemaufruf und liefert dieselben Felder, die auch das Shell-Kommando uname -a ausgibt.

Das zurückgegebene Array enthält folgende Schlüssel: sysname (Name des Betriebssystems, z. B. Linux), nodename (Hostname des Rechners), release (Release-Kennung des Kernels), version (Versions-String des Kernels) und machine (Maschinentyp/Architektur, z. B. x86_64).

Die Funktion ist nützlich, um zur Laufzeit plattformspezifische Entscheidungen zu treffen, Diagnoseinformationen in Log-Ausgaben einzubetten oder die Serverumgebung zu dokumentieren. Sie gehört zur POSIX-Erweiterung (ext/posix) und ist daher hauptsächlich auf Unix-artigen Systemen (Linux, macOS, BSD) verfügbar.

Auf Windows-Systemen steht posix_uname() in der Regel nicht zur Verfügung, da die POSIX-Erweiterung dort nicht standardmäßig enthalten ist.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array mit den Schlüsseln sysname, nodename, release, version und machine zurück. Bei einem Fehler wird false zurückgegeben.

Beispiele

Systeminformationen ausgeben

<?php
$info = posix_uname();

if ($info === false) {
    echo 'posix_uname() konnte keine Informationen liefern.';
} else {
    echo 'Betriebssystem: ' . $info['sysname'] . PHP_EOL;
    echo 'Hostname:       ' . $info['nodename'] . PHP_EOL;
    echo 'Kernel-Release: ' . $info['release'] . PHP_EOL;
    echo 'Kernel-Version: ' . $info['version'] . PHP_EOL;
    echo 'Architektur:    ' . $info['machine'] . PHP_EOL;
}
Betriebssystem: Linux Hostname: webserver01 Kernel-Release: 6.1.0-21-amd64 Kernel-Version: #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) Architektur: x86_64

Plattformspezifische Logik basierend auf dem Maschinentyp

<?php
$info = posix_uname();

if ($info !== false) {
    $arch = $info['machine'];

    if (in_array($arch, ['x86_64', 'amd64'], true)) {
        echo 'Läuft auf einer 64-Bit-x86-Plattform.';
    } elseif (str_starts_with($arch, 'aarch64') || $arch === 'arm64') {
        echo 'Läuft auf einer ARM64-Plattform.';
    } else {
        echo 'Unbekannte Architektur: ' . htmlspecialchars($arch);
    }
}
Läuft auf einer 64-Bit-x86-Plattform.

// Wichtig · Fallstricke

Verfügbarkeit: Die Funktion ist nur verfügbar, wenn PHP mit der POSIX-Erweiterung kompiliert wurde (Standard auf Linux/macOS, nicht auf Windows). Vor dem Aufruf sollte function_exists('posix_uname') geprüft werden, wenn plattformübergreifende Kompatibilität erforderlich ist.

Sicherheitshinweis: Die zurückgegebenen Informationen (insbesondere nodename, release und version) sollten niemals ungefiltert in HTML-Ausgaben eingebettet werden, da sie potenziell sensible Systeminformationen enthalten. Verwende stets htmlspecialchars() bei der Ausgabe.

Auf manchen Systemen kann der Schlüssel domainname zusätzlich im Array enthalten sein, dieser ist jedoch nicht Teil des POSIX-Standards und daher nicht portabel.