Start · Sprachen · PHP · Referenz · gnupg_geterrorinfo

gnupg_geterrorinfo

Funktion

Gibt ein assoziatives Array mit Fehlerinformationen der letzten GnuPG-Operation zurück.

seit PHP 1.3.0 Kategorie: crypto

Signatur

gnupg_geterrorinfo(resource $identifier): array

Beschreibung

gnupg_geterrorinfo() liefert detaillierte Informationen über den zuletzt aufgetretenen Fehler bei einer GnuPG-Operation. Das zurückgegebene Array enthält einen numerischen Fehlercode (gpgerr_code), eine lesbare Quellangabe (gpgerr_source) sowie eine menschenlesbare Fehlermeldung (gpgerr_str).

Die Funktion ist besonders nützlich, wenn eine vorherige GnuPG-Funktion – wie gnupg_encrypt(), gnupg_decrypt() oder gnupg_sign() – fehlgeschlagen ist und man mehr als nur ein false als Rückgabewert benötigt. Damit lässt sich gezielt auf unterschiedliche Fehlerklassen reagieren, z. B. fehlende Schlüssel, ungültige Passphrasen oder Netzwerkprobleme beim Keyserver-Zugriff.

Diese Funktion setzt ein gültiges GnuPG-Ressource-Handle voraus, das zuvor mit gnupg_init() erzeugt wurde. Im OO-Stil der PECL-Erweiterung steht die äquivalente Methode GnuPG::geterrorinfo() zur Verfügung.

Parameter

Name Typ Default Beschreibung
$identifier Pflicht resource Das GnuPG-Ressource-Handle, das mit gnupg_init() erzeugt wurde.

Rückgabewert

Typ
array
Beschreibung
Gibt ein assoziatives Array mit folgenden Schlüsseln zurück:
  • gpgerr_code (int) – Numerischer GnuPG-Fehlercode
  • gpgerr_source (string) – Quelle des Fehlers (z. B. Unbekannt, GPGME)
  • gpgerr_str (string) – Lesbare Fehlermeldung als Zeichenkette

Beispiele

Fehlermeldung nach fehlgeschlagener Entschlüsselung ausgeben

<?php
$res = gnupg_init();

// Ungültige verschlüsselte Daten übergeben
$result = gnupg_decrypt($res, 'das-ist-kein-gueltiger-pgp-block');

if ($result === false) {
    $error = gnupg_geterrorinfo($res);
    echo 'Fehler aufgetreten!' . PHP_EOL;
    echo 'Code:   ' . $error['gpgerr_code'] . PHP_EOL;
    echo 'Quelle: ' . $error['gpgerr_source'] . PHP_EOL;
    echo 'Meldung: ' . $error['gpgerr_str'] . PHP_EOL;
}
Fehler aufgetreten! Code: 58 Quelle: GPGME Meldung: No data

OO-Stil: Fehlerinfo nach misslungenem Signieren

<?php
$gpg = new gnupg();

// Kein Schlüssel zum Signieren ausgewählt
$result = $gpg->sign('Nachrichtentext');

if ($result === false) {
    $error = $gpg->geterrorinfo();
    printf(
        "Signierung fehlgeschlagen (Code %d): %s\n",
        $error['gpgerr_code'],
        $error['gpgerr_str']
    );
}
Signierung fehlgeschlagen (Code 17): No secret key

// Wichtig · Fallstricke

Hinweis zur PECL-Erweiterung: gnupg_geterrorinfo() steht nur zur Verfügung, wenn die PECL-Erweiterung gnupg installiert und geladen ist. Sie ist nicht Bestandteil der PHP-Standardbibliothek. Stelle sicher, dass GnuPG (libgpgme) auf dem System korrekt installiert ist.

Fehlercode-Bedeutung: Die numerischen Fehlercodes entsprechen den GPGME-Fehlercodes. Ihre Bedeutung ist in der GPGME-Dokumentation nachschlagbar. Nicht jeder Fehler wird durch gnupg_geterrorinfo() korrekt befüllt – prüfe stets sowohl Code als auch Meldung.

Passphrasen-Sicherheit: Vermeide es, Fehlerinformationen (inkl. Schlüssel-IDs oder Passphrasen-Hinweise) direkt an den Endnutzer auszugeben; logge sie stattdessen serverseitig, um keine sicherheitsrelevanten Details zu enthüllen.