Start · Sprachen · PHP · Referenz · gnupg_seterrormode

gnupg_seterrormode

Funktion

Legt den Fehlermodus für eine GnuPG-Ressource fest und bestimmt, wie Fehler bei GnuPG-Operationen gemeldet werden.

Kategorie: crypto

Signatur

gnupg_seterrormode(resource $identifier, int $errormode): void

Beschreibung

gnupg_seterrormode konfiguriert das Fehlerverhalten einer GnuPG-Ressource. Je nach gewähltem Modus werden Fehler entweder als PHP-Fehler/-Ausnahmen ausgegeben oder lediglich intern gespeichert, sodass sie manuell über gnupg_geterror abgerufen werden können.

Es stehen drei Modi zur Verfügung: GNUPG_ERROR_WARNING gibt einen PHP-Warning-Fehler aus, GNUPG_ERROR_EXCEPTION wirft eine PHP-Exception und GNUPG_ERROR_SILENT unterdrückt die Fehlermeldung vollständig, sodass nur intern gemeldet wird. In produktiven Anwendungen empfiehlt sich oft der Exception-Modus, da er eine saubere Fehlerbehandlung über try/catch-Blöcke ermöglicht.

Der Fehlermodus gilt pro GnuPG-Ressource und sollte direkt nach der Initialisierung via gnupg_init gesetzt werden, bevor andere Operationen wie Signieren oder Verschlüsseln durchgeführt werden.

Parameter

Name Typ Default Beschreibung
$identifier Pflicht resource Die GnuPG-Ressource, die zuvor mit gnupg_init() erstellt wurde.
$errormode Pflicht int Der gewünschte Fehlermodus. Mögliche Werte sind:
  • GNUPG_ERROR_WARNING – gibt eine PHP-Warnung aus
  • GNUPG_ERROR_EXCEPTION – wirft eine PHP-Exception
  • GNUPG_ERROR_SILENT – unterdrückt die Fehlermeldung (Standard)

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

Beispiele

Fehlermodus auf Exception setzen

<?php
$gpg = gnupg_init();

// Fehlermodus auf Exception stellen
gnupg_seterrormode($gpg, GNUPG_ERROR_EXCEPTION);

try {
    // Versuche, mit einem nicht vorhandenen Schlüssel zu verschlüsseln
    gnupg_addencryptkey($gpg, 'NICHTVORHANDENER_FINGERPRINT');
    $encrypted = gnupg_encrypt($gpg, 'Geheime Nachricht');
    echo $encrypted;
} catch (Exception $e) {
    echo 'GnuPG-Fehler: ' . $e->getMessage();
}
GnuPG-Fehler: get_key failed

Fehlermodus auf SILENT setzen und Fehler manuell abrufen

<?php
$gpg = gnupg_init();

// Fehlermeldungen unterdrücken – Fehler manuell prüfen
gnupg_seterrormode($gpg, GNUPG_ERROR_SILENT);

$result = gnupg_addencryptkey($gpg, 'NICHTVORHANDENER_FINGERPRINT');

if ($result === false) {
    $error = gnupg_geterror($gpg);
    echo 'Fehler aufgetreten: ' . $error;
} else {
    echo 'Schlüssel erfolgreich hinzugefügt.';
}
Fehler aufgetreten: get_key failed

// Wichtig · Fallstricke

Hinweis: Der Standardmodus ist GNUPG_ERROR_SILENT. Wenn dieser Modus aktiv ist und kein manuelles Fehlerprüfen via gnupg_geterror stattfindet, können Fehler leicht übersehen werden – dies kann in sicherheitskritischen Anwendungen zu unbemerkt fehlgeschlagenen Verschlüsselungs- oder Signieroperationen führen.

Für produktive Systeme wird empfohlen, entweder GNUPG_ERROR_EXCEPTION zu verwenden oder nach jeder GnuPG-Operation den Rückgabewert zu prüfen und ggf. gnupg_geterror aufzurufen.