2016-05-26 9 views
0

In meinem PHP Code bevorzuge ich immer die 'nativen' PHP snmp Funktionen wie snmp2_set().PHP snmp2_set Fehlermeldungen (Rückgabewerte)

Leider bietet die obige Funktion keine ausreichende Rückmeldung.

Aus dem Handbuch:

Return Values: 

Returns TRUE on success or FALSE on failure. 

Bei erfolgloser Ausführung in meinem apache2 error.log i die detaillierte Fehler-/Warnmeldungen zu sehen, wie folgt aus:

PHP Warning: snmp2_set(): Error in packet at 'enterprises.9.9.116.1.4.1.1.2.8048': wrongValue (The set value is illegal or unsupported in some way) in /var/www/modules/myfunc.php on line 2238 ... 

Vielleicht ist es möglich, dass Eine ähnliche Nachricht wird von der Funktion snmp2_set() zurückgegeben?

Antwort

1

Es gibt keine Möglichkeit, diese Nachricht direkt von dieser Funktion zu erhalten, da dies in PHP funktioniert. Viele Methoden werden nur true/false zurückgeben und dann eine Warnung mit einer genauen Nachricht auslösen.

Sie können weiterhin auf diese Nachricht zugreifen, indem Sie error_get_last() aufrufen. Sie erhalten ein Array mit Details zum Fehler (http://php.net/manual/en/function.error-get-last.php).

Having said that, ich würde alle Warnungen/Hinweise als Ausnahmen von der Registrierung eigene Fehlerbehandlung zu behandeln empfehlen, solche Warnungen/Hinweise zur Ausnahme konvertieren, die Sie später in Ihrem Code fangen:

function myErrorHandler($errno , $errstr){ 
    throw new MyException($errstr, $errno); 
} 

set_error_handler("myErrorHandler"); 

und dann:

try { 
    snmp2_set(/* ... */); 
} catch (MyException $e) { 
    $e->getMessage(); // Here you will have your error message 
}