В моем PHP-коде я всегда предпочитаю «родные» PHP-функции snmp, такие как snmp2_set()
,
Но, к сожалению, вышеуказанная функция не обеспечивает достаточной обратной связи.
Из руководства:
Return Values:
Returns TRUE on success or FALSE on failure.
В случае неудачного выполнения в моем apache2 error.log я вижу подробные сообщения об ошибках / предупреждениях, например:
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 ...
Возможно, что подобное сообщение возвращается из функции snmp2_set ()?
Нет способа получить это сообщение напрямую от этой функции, потому что именно так оно работает в PHP. Многие методы вернут только true
/false
а затем поднять предупреждение с точным сообщением.
Вы все еще можете получить доступ к этому сообщению, позвонив error_get_last()
, Он вернет вам массив с подробной информацией об ошибке (http://php.net/manual/en/function.error-get-last.php).
Сказав это, я бы порекомендовал обрабатывать все предупреждения / уведомления как исключения, регистрируя собственный обработчик ошибок, который преобразует такие предупреждения / уведомления в исключение, которое вы позже можете перехватить в своем коде:
function myErrorHandler($errno , $errstr){
throw new MyException($errstr, $errno);
}
set_error_handler("myErrorHandler");
а потом:
try {
snmp2_set(/* ... */);
} catch (MyException $e) {
$e->getMessage(); // Here you will have your error message
}
Других решений пока нет …