2016-05-26 15 views
0

私のPHPコードでは、私は常にsnmp2_set()のような 'ネイティブ' PHP snmp関数を好んでいます。PHPのsnmp2_setエラーメッセージ(戻り値)

しかし残念ながら、上記の機能は十分なフィードバックを提供しません。マニュアルから

:私のapache2のerror.logファイル内に実行に失敗した場合には

Return Values: 

Returns TRUE on success or FALSE on failure. 

私はこのように、詳細なエラー/警告メッセージを参照してください。

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

これは、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 
}