PHP snmp2_set错误消息(返回值)

时间:2016-05-26 08:08:34

标签: php snmp

在我的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()函数返回类似的消息?

1 个答案:

答案 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
}