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