Start · Sprachen · PHP · Referenz · posix_strerror

posix_strerror

Funktion

Gibt die systemseitige Fehlermeldung zurück, die dem übergebenen POSIX-Fehlercode (<code>errno</code>-Wert) entspricht.

seit PHP 4.2.0 Kategorie: misc

Signatur

posix_strerror(int $errno): string

Beschreibung

posix_strerror() wandelt einen numerischen POSIX-Fehlercode in eine lesbare, locale-abhängige Fehlermeldung um. Die Funktion entspricht der C-Standardfunktion strerror() und liefert damit dieselben Texte, die das Betriebssystem auch für andere Fehlerausgaben verwendet.

Typischer Einsatzfall ist die Kombination mit posix_get_last_error(): Nachdem eine POSIX-Funktion fehlgeschlagen ist, liest man den zuletzt gesetzten Fehlercode aus und übersetzt ihn mit posix_strerror() in eine aussagekräftige Meldung – ähnlich wie strerror(errno) in C-Programmen.

Die zurückgegebenen Strings sind betriebssystem- und sprachabhängig. Unter Linux beispielsweise liefert Fehlercode 13 den Text Permission denied, unter anderen Systemen kann die Formulierung abweichen. Das Locale der aktuellen PHP-Umgebung beeinflusst die Ausgabe, sofern das System übersetzte Fehlertexte bereitstellt.

Die Funktion steht nur auf POSIX-kompatiblen Systemen (Linux, macOS, BSD) zur Verfügung und ist auf Windows nicht nutzbar. Sie befindet sich in der POSIX-Erweiterung, die auf Shared-Hosting-Umgebungen gelegentlich deaktiviert ist.

Parameter

Name Typ Default Beschreibung
$errno Pflicht int Numerischer POSIX-Fehlercode, dessen Klartextbeschreibung gewünscht wird. Üblicherweise der Rückgabewert von posix_get_last_error().

Rückgabewert

Typ
string
Beschreibung
Die systemseitige Fehlermeldung als String. Bei einem unbekannten oder ungültigen Fehlercode gibt die Funktion einen leeren String oder einen generischen Hinweis zurück – das genaue Verhalten ist betriebssystemabhängig.

Beispiele

Fehlercode nach gescheiterter POSIX-Operation auslesen

<?php
// Versuche, eine Signalmaske mit einem ungültigen Signal zu setzen
$result = posix_kill(0, -1); // ungültiges Signal

if ($result === false) {
    $code = posix_get_last_error();
    $message = posix_strerror($code);
    echo "Fehler $code: $message" . PHP_EOL;
}
Fehler 22: Invalid argument

Bekannte Fehlercodes direkt nachschlagen

<?php
// Häufige POSIX-Fehlercodes und ihre Bedeutung ausgeben
$codes = [
    1  => 'EPERM',
    2  => 'ENOENT',
    13 => 'EACCES',
    22 => 'EINVAL',
    28 => 'ENOSPC',
];

foreach ($codes as $code => $constant) {
    printf("%s (%d): %s\n", $constant, $code, posix_strerror($code));
}
EPERM (1): Operation not permitted ENOENT (2): No such file or directory EACCES (13): Permission denied EINVAL (22): Invalid argument ENOSPC (28): No space left on device

// Wichtig · Fallstricke

Plattformverfügbarkeit: posix_strerror() ist ausschließlich auf POSIX-kompatiblen Systemen verfügbar (Linux, macOS, *BSD). Unter Windows steht die Funktion nicht zur Verfügung, da die POSIX-Erweiterung dort nicht unterstützt wird.

Locale-Abhängigkeit: Der zurückgegebene Text kann je nach Systemkonfiguration und gesetztem Locale in der Sprache des Betriebssystems erscheinen. Für konsistente, englische Ausgaben empfiehlt es sich, setlocale(LC_MESSAGES, 'C') zu setzen, bevor die Funktion aufgerufen wird.

Unbekannte Codes: Wird ein Fehlercode übergeben, den das System nicht kennt, ist das Verhalten undefiniert und betriebssystemabhängig – der Rückgabewert sollte daher nicht blind vertraut werden.