Start · Sprachen · PHP · Referenz · gnupg_geterror

gnupg_geterror

Funktion

Gibt den Fehlertext der zuletzt fehlgeschlagenen GnuPG-Operation zurück.

seit PHP 1.3.0 Kategorie: crypto

Signatur

gnupg_geterror(resource $identifier): string|false

Beschreibung

gnupg_geterror() liefert eine menschenlesbare Fehlermeldung, die von der GnuPG-Erweiterung nach einer fehlgeschlagenen Operation gespeichert wurde. Sie sollte immer dann aufgerufen werden, wenn eine andere gnupg_*-Funktion false zurückgibt, um den genauen Fehlergrund zu ermitteln.

Die Funktion gibt den Fehler als Zeichenkette zurück, sofern ein Fehler vorliegt. Ist kein Fehler gesetzt (z. B. weil die letzte Operation erfolgreich war), gibt sie false zurück.

Typische Anwendungsfälle sind die Fehlerbehandlung beim Ver- und Entschlüsseln, beim Signieren oder beim Importieren von Schlüsseln. Ohne diese Funktion wäre es schwierig, zwischen unterschiedlichen Fehlerursachen zu unterscheiden – etwa einem ungültigen Schlüssel, einer falschen Passphrase oder einem Netzwerkfehler beim Keyserver-Zugriff.

Die prozedural genutzte Funktion gnupg_geterror() entspricht der Methode GnuPG::geterror() in der objektorientierten Variante der Erweiterung.

Parameter

Name Typ Default Beschreibung
$identifier Pflicht resource Eine GnuPG-Ressource, die zuvor mit gnupg_init() erzeugt wurde. Über diese Ressource wird der interne Fehlerstatus der jeweiligen GnuPG-Instanz abgefragt.

Rückgabewert

Typ
string|false
Beschreibung
Gibt die Fehlermeldung der zuletzt fehlgeschlagenen Operation als string zurück. Liegt kein Fehler vor oder wurde noch keine Operation ausgeführt, wird false zurückgegeben.

Beispiele

Fehlerbehandlung beim Entschlüsseln

<?php
$gpg = gnupg_init();

// Passphrase für den privaten Schlüssel setzen
gnupg_adddecryptkey($gpg, 'FINGERPRINT_DES_SCHLÜSSELS', 'falsche_passphrase');

$verschluesselt = '-----BEGIN PGP MESSAGE-----\n...\n-----END PGP MESSAGE-----';

$ergebnis = gnupg_decrypt($gpg, $verschluesselt);

if ($ergebnis === false) {
    $fehler = gnupg_geterror($gpg);
    echo 'Entschlüsselung fehlgeschlagen: ' . $fehler;
} else {
    echo 'Entschlüsselter Text: ' . $ergebnis;
}
Entschlüsselung fehlgeschlagen: Bad passphrase

Fehlerbehandlung beim Signieren

<?php
$gpg = gnupg_init();

// Versuche, mit einem nicht vorhandenen Schlüssel zu signieren
gnupg_addsignkey($gpg, 'NICHT_VORHANDENER_FINGERPRINT', '');

$nachricht = 'Dies ist eine Test-Nachricht.';
$signatur = gnupg_sign($gpg, $nachricht);

if ($signatur === false) {
    $fehler = gnupg_geterror($gpg);
    echo 'Signierung fehlgeschlagen: ' . $fehler;
} else {
    echo 'Signatur erfolgreich erstellt.';
}
Signierung fehlgeschlagen: No secret key

// Wichtig · Fallstricke

Fehlertext ist instanzgebunden: Der Fehlertext wird pro GnuPG-Ressource gespeichert. Bei mehreren parallelen GnuPG-Instanzen muss jeweils die korrekte Ressource übergeben werden, da sonst der Fehler einer anderen Instanz ausgelesen werden könnte.

Keine Ausnahmen: Die prozedurale GnuPG-Erweiterung wirft keine PHP-Exceptions. Die einzige Möglichkeit, Fehler zu erkennen und auszuwerten, ist die Prüfung des Rückgabewertes der jeweiligen Funktion in Kombination mit gnupg_geterror().

Fehlermeldungen in Englisch: Die Fehlertexte kommen direkt von der zugrunde liegenden libgpgme-Bibliothek und sind in der Regel auf Englisch. Eine Lokalisierung ist nicht vorgesehen.