PHP snmp2_set 个错误消息(return 个值)

PHP snmp2_set error messages (return values)

在我的 PHP 代码中,我总是喜欢 'native' PHP snmp 函数,例如 snmp2_set().

但不幸的是,上述功能并没有提供足够的反馈。

来自手册:

Return Values:

Returns TRUE on success or FALSE on failure.

如果在我的 apache2 error.log 中执行失败,我会看到详细的 error/warning 消息,如下所示:

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 中是这样工作的。很多方法只会 return true/false 然后用确切的消息发出警告。

您仍然可以通过调用 error_get_last() 来访问此消息。它将 return 你一个包含错误详细信息的数组 (http://php.net/manual/en/function.error-get-last.php)。

话虽如此,我建议通过注册自己的错误处理程序来处理所有 warnings/notices 异常,该错误处理程序会将此类 warnings/notices 转换为您稍后可以在代码中捕获的异常:

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
}