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