在我的PHP代码中,我总是喜欢' native' 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()函数返回类似的消息?
答案 0 :(得分:1)
无法直接从该函数获取此消息,因为这是它在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
}