【问题标题】:PHP snmp2_set error messages (return values)PHP snmp2_set 错误信息(返回值)
【发布时间】:2016-05-26 08:08:33
【问题描述】:

在我的 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 snmp


    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      相关资源
      最近更新 更多