Start · Sprachen · PHP · Referenz · posix_errno

posix_errno

Funktion

Alias von <code>posix_get_last_error()</code> — gibt den Fehlercode der zuletzt fehlgeschlagenen POSIX-Funktion zurück.

seit PHP 8.0.0 Kategorie: misc

Signatur

posix_errno(): int

Beschreibung

posix_errno() ist ein Alias der Funktion posix_get_last_error() und gibt den Fehlercode zurück, der beim letzten Fehler einer POSIX-Funktion gesetzt wurde. Der zurückgegebene Ganzzahl-Wert entspricht dem systemweiten errno-Wert, der nach einem fehlgeschlagenen POSIX-Aufruf gesetzt wird.

Der zurückgegebene Fehlercode kann zusammen mit posix_strerror() verwendet werden, um eine lesbare Fehlermeldung zu erhalten. So lässt sich gezielt auf bestimmte Fehlertypen reagieren (z. B. fehlende Berechtigungen, nicht vorhandene Ressourcen).

Die Funktion ist besonders nützlich, wenn POSIX-Funktionen wie posix_kill(), posix_setuid() oder posix_getpwnam() false zurückgeben und der genaue Grund des Fehlers ermittelt werden soll. Sie steht nur auf POSIX-kompatiblen Systemen (Linux, macOS, BSD) zur Verfügung und ist auf Windows nicht verfügbar.

Rückgabewert

Typ
int
Beschreibung
Gibt den numerischen POSIX-Fehlercode der zuletzt fehlgeschlagenen POSIX-Funktion zurück. Gibt 0 zurück, wenn kein Fehler vorliegt.

Beispiele

Fehlercode nach fehlgeschlagenem posix_kill()

<?php
// Versuche, ein Signal an eine nicht existierende Prozess-ID zu senden
$pid = 999999;
$result = posix_kill($pid, 0);

if ($result === false) {
    $errorCode = posix_errno();
    $errorMessage = posix_strerror($errorCode);
    echo "Fehler-Code: " . $errorCode . PHP_EOL;
    echo "Fehlermeldung: " . $errorMessage . PHP_EOL;
}
Fehler-Code: 3 Fehlermeldung: No such process

Fehlerdiagnose bei posix_setuid()

<?php
// Versuche, die UID auf 0 (root) zu setzen — schlägt fehl ohne root-Rechte
$result = posix_setuid(0);

if ($result === false) {
    $errorCode = posix_errno();
    $errorMessage = posix_strerror($errorCode);
    echo "Setuid fehlgeschlagen!" . PHP_EOL;
    echo "Errno: " . $errorCode . PHP_EOL;
    echo "Grund: " . $errorMessage . PHP_EOL;
}
Setuid fehlgeschlagen! Errno: 1 Grund: Operation not permitted

// Wichtig · Fallstricke

Verfügbarkeit: posix_errno() steht nur auf POSIX-kompatiblen Betriebssystemen (Linux, macOS, BSD) zur Verfügung. Auf Windows-Systemen ist die Funktion nicht verfügbar und führt zu einem schwerwiegenden Fehler.

Alias: Seit PHP 8.0.0 ist posix_errno() ein offizieller Alias von posix_get_last_error(). Beide Funktionen sind identisch in ihrer Funktionsweise. In neuem Code kann entweder Variante verwendet werden, wobei posix_get_last_error() die semantisch klarere Wahl ist.

Der Fehlercode wird nicht automatisch zurückgesetzt. Wenn eine POSIX-Funktion erfolgreich ist, bleibt der vorherige Fehlercode weiterhin gesetzt. Es empfiehlt sich daher, posix_errno() unmittelbar nach einem fehlgeschlagenen Aufruf abzufragen.