Signatur
Beschreibung
socket_strerror() übersetzt einen numerischen Socket-Fehlercode in eine verständliche Fehlermeldung als Zeichenkette. Die Funktion funktioniert analog zur C-Funktion strerror() und ist nützlich, um Fehler aus Socket-Operationen für Logging oder Benutzeranzeige aufzubereiten.
Den passenden Fehlercode erhält man typischerweise über socket_last_error(), nachdem eine Socket-Operation fehlgeschlagen ist. Die zurückgegebenen Fehlermeldungen stammen direkt aus dem Betriebssystem und können je nach Plattform (Linux, Windows) leicht unterschiedlich formuliert sein.
Die Funktion ist besonders nützlich in Verbindung mit socket_last_error() und socket_clear_error(), um eine robuste Fehlerbehandlung in netzwerkbasierenden PHP-Anwendungen zu implementieren. Es empfiehlt sich, nach jeder fehlerhaften Socket-Operation den Fehlercode abzufragen und den Fehler-Status anschließend zurückzusetzen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $error_code Pflicht | int | Ein numerischer Socket-Fehlercode, wie er z. B. von socket_last_error() zurückgegeben wird. |
Rückgabewert
Beispiele
Einfache Fehlerbehandlung beim Erstellen eines Sockets
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
$errorCode = socket_last_error();
$errorMessage = socket_strerror($errorCode);
echo "Socket konnte nicht erstellt werden. Fehlercode: $errorCode\n";
echo "Fehlermeldung: $errorMessage\n";
} else {
echo "Socket erfolgreich erstellt.\n";
socket_close($socket);
}
Fehlerbehandlung bei fehlgeschlagenem Verbindungsaufbau
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die('Socket-Erstellung fehlgeschlagen: ' . socket_strerror(socket_last_error()));
}
// Verbindung zu einem nicht erreichbaren Host versuchen
$result = socket_connect($socket, '192.0.2.1', 9999);
if ($result === false) {
$errorCode = socket_last_error($socket);
echo "Verbindung fehlgeschlagen (Code $errorCode): " . socket_strerror($errorCode) . "\n";
socket_clear_error($socket);
}
socket_close($socket);
Direktes Übersetzen bekannter Fehlercodes
<?php
// Bekannte POSIX-Fehlercodes direkt übersetzen
$knownCodes = [1, 13, 98, 111, 113];
foreach ($knownCodes as $code) {
echo "Fehlercode $code: " . socket_strerror($code) . "\n";
}
// Wichtig · Fallstricke
Plattformabhängigkeit: Die zurückgegebenen Fehlermeldungen sind betriebssystemabhängig. Unter Windows können die Meldungen und Fehlercodes von denen unter Linux/Unix abweichen, da Windows eine eigene Winsock-Fehlernummern-Systematik verwendet.
Kombination mit socket_clear_error(): Nach der Fehlerbehandlung sollte socket_clear_error() aufgerufen werden, um den gespeicherten Fehlercode zurückzusetzen, da socket_last_error() sonst beim nächsten Aufruf noch den alten Fehler liefert – selbst wenn die darauffolgende Operation erfolgreich war.
Sicherheitshinweis: Fehlermeldungen von socket_strerror() sollten niemals ungefiltert in HTML-Ausgaben eingebettet werden, da sie Zeichen enthalten können, die zu Cross-Site-Scripting (XSS) führen. Vor der Ausgabe im Browser immer htmlspecialchars() verwenden.