Start · Sprachen · PHP · Referenz · mqseries_strerror

mqseries_strerror

Funktion

Gibt zu einem numerischen IBM MQSeries-Ergebniscode (Reason Code) die zugehörige Fehlermeldung als lesbaren String zurück.

Kategorie: misc

Signatur

mqseries_strerror(int $reason_code): string

Beschreibung

mqseries_strerror() ist Teil der PHP-MQSeries-Erweiterung und dient dazu, numerische Fehlercodes aus IBM WebSphere MQ (MQSeries) in lesbare Fehlermeldungen umzuwandeln. Die Funktion ist besonders nützlich beim Debugging und bei der Fehlerbehandlung in Anwendungen, die mit MQ-Warteschlangen kommunizieren.

IBM MQ verwendet sogenannte Reason Codes (z. B. 2035 für MQRC_NOT_AUTHORIZED), um den genauen Grund eines Fehlers zu beschreiben. Anstatt diese Codes manuell in der IBM-Dokumentation nachschlagen zu müssen, liefert mqseries_strerror() direkt den entsprechenden Klarnamen bzw. die Beschreibung.

Typisch wird die Funktion in einem Fehlerfall eingesetzt, nachdem eine MQSeries-Funktion einen Fehler zurückgegeben hat. Man liest den Reason Code aus dem entsprechenden Parameter (z. B. $reason) aus und übergibt ihn an mqseries_strerror(), um eine aussagekräftige Fehlermeldung zu erhalten.

  • Die Erweiterung muss als PECL-Paket (mqseries) installiert sein.
  • Die Funktion arbeitet rein lokal mit einer internen Tabelle und kommuniziert nicht mit dem MQ-Server.

Parameter

Name Typ Default Beschreibung
$reason_code Pflicht int Der numerische MQSeries Reason Code, dessen Klartext-Fehlermeldung ermittelt werden soll (z. B. 2035 für MQRC_NOT_AUTHORIZED).

Rückgabewert

Typ
string
Beschreibung
Gibt einen String mit der Klartext-Beschreibung des übergebenen Reason Codes zurück. Ist der Code unbekannt, wird ein generischer Hinweis zurückgegeben.

Beispiele

Fehlermeldung nach fehlgeschlagenem mqseries_conn()-Aufruf ausgeben

<?php
// Verbindung zu einem MQ-Queue-Manager herstellen
mqseries_conn('MyQueueManager', $hconn, $comp_code, $reason);

if ($comp_code !== MQSERIES_MQCC_OK) {
    // Reason Code in Klartext umwandeln
    $errorMessage = mqseries_strerror($reason);
    echo 'MQ-Verbindungsfehler (Reason Code ' . $reason . '): ' . $errorMessage . PHP_EOL;
} else {
    echo 'Verbindung erfolgreich hergestellt.' . PHP_EOL;
}
?>
MQ-Verbindungsfehler (Reason Code 2058): MQRC_Q_MGR_NAME_ERROR

Direktes Nachschlagen eines bekannten Reason Codes

<?php
// Bekannter Reason Code: 2035 = MQRC_NOT_AUTHORIZED
$reasonCode = 2035;
$message = mqseries_strerror($reasonCode);
echo 'Reason Code ' . $reasonCode . ' bedeutet: ' . $message . PHP_EOL;

// Weiterer bekannter Code: 2033 = MQRC_NO_MSG_AVAILABLE
$reasonCode2 = 2033;
echo 'Reason Code ' . $reasonCode2 . ' bedeutet: ' . mqseries_strerror($reasonCode2) . PHP_EOL;
?>
Reason Code 2035 bedeutet: MQRC_NOT_AUTHORIZED Reason Code 2033 bedeutet: MQRC_NO_MSG_AVAILABLE

// Wichtig · Fallstricke

Die MQSeries-Erweiterung für PHP ist ein PECL-Paket und muss separat installiert werden. Sie setzt eine vorhandene IBM MQ Client-Installation auf dem Server voraus. Die Erweiterung ist nicht im Standard-PHP-Paket enthalten und wird für Produktionsumgebungen nur empfohlen, wenn eine Lizenz für IBM WebSphere MQ vorliegt.

Reason Codes sind in der offiziellen IBM MQ Dokumentation vollständig aufgelistet. mqseries_strerror() kennt möglicherweise nicht alle Codes neuerer MQ-Versionen, da die PECL-Erweiterung selten aktualisiert wird.