Signatur
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
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;
}
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);
}
}
// 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.