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