This problem has been around at least since 4.3.2, you might also want to look at http://bugs.debian.org/185534
snmprealwalk and snmpwalkoid fail to work properly on my alpha. snmpwalk used to not work but now does. Version is
php4-STABLE-200304041230
./configure line was
'--enable-debug' \
'--with-bz2' \
'--with-snmp' \
'--with-openssl' \
This is the test code:
<?
$host='myhostname';
$community='mysecret';
$ifDescr = snmpwalkoid("$host","$community","interfaces.ifTable.ifEntry.ifDescr");
var_dump($ifDescr);
?>
Output is:
---------
array(1) {
["interfaces.ifTable.ifEntry.ifDescr.1"]=>
string(42) "interfaces.ifTable.ifEntry.ifDescr.6 = br0"
}
--------
This is broken, as this is the result of the last (6th) interface in the place of the first, notice the key says ifDesc.1 and the result says ifDescr.6
This is what a i386 running Debian 4.2.3-13 on the exact same script does:
---------
array(6) {
["interfaces.ifTable.ifEntry.ifDescr.1"]=>
string(41) "interfaces.ifTable.ifEntry.ifDescr.1 = lo"
["interfaces.ifTable.ifEntry.ifDescr.2"]=>
string(43) "interfaces.ifTable.ifEntry.ifDescr.2 = eth0"
["interfaces.ifTable.ifEntry.ifDescr.3"]=>
string(43) "interfaces.ifTable.ifEntry.ifDescr.3 = eth1"
["interfaces.ifTable.ifEntry.ifDescr.4"]=>
string(43) "interfaces.ifTable.ifEntry.ifDescr.4 = gre0"
["interfaces.ifTable.ifEntry.ifDescr.5"]=>
string(43) "interfaces.ifTable.ifEntry.ifDescr.5 = sit0"
["interfaces.ifTable.ifEntry.ifDescr.6"]=>
string(42) "interfaces.ifTable.ifEntry.ifDescr.6 = br0"
}
------
I ran some tests on the 4.2.3 code and it was definitely returning the right and multiple values. I basically enabled the Debug() line in snmp.c and saw the return string come back the way I expected.
So it looks like some pointer or array is getting overwritten. I tried linking in electric fence but libsnmp is too buggy and it died within the library loading up the mibs.

After more testing, there are two bugs in this module
1) Something breaks in the OID resolver, you get the entire MIB tree. This occured on alpha and i386 and seems to be fixed in Debian 4.2.3-13 It does suggest you have a problem with the net-snmp library as -9 and -13 are linked to ucd-snmp 4.2 while -12 is net-snmp 5.
2) Something is seriously wrong with the array handling and you get part of the table or just junk text. This happens on the alpha at least but not the i386.
Here are my results, see key below to work out what I did:
Arch Ver N/SW N/SWO N/SRW C/SW C/SWO C/SRW
i386 4.2.3-9 OK OK OK OK OK OK
i386 4.2.3-12 OK OK OK WT WT WT
i386 4.2.3-13 OK OK OK OK OK OK
alpha 4.2.3-9 OK ST ST OK ST ST
alpha 4.2.3-12 WT WT WT WT WT WT
alpha 4.2.3-13 OK BA BA OK BA BA
alpha STABLE OK BA BA OK BA BA
The Arch should be obvious
Ver is version the 4.2.3-X is a Debian version, STABLE means the one I downloaded php4-STABLE-200304041230
Then the various functions
N/SW Numeric OID, snmpwalk()
N/SWO Numeric OID, snmpwalkoid()
N/SRW Numeric OID, snmprealwalk()
C/SW Character OID, snmpwalk()
C/SWO Character OID, snmpwalkoid()
C/SRW Character OID, snmprealwalk()
Numeric OID is ".1.3.6.1.2.1.2.2.1.2"
Character OID is "interfaces.ifTable.ifEntry.ifDescr"
The results
OK - obviously it worked fine!
WT - Whole tree. Get error message of "Invalid object identifier" then it scans the entire MIB tree of remote object.
BA - Broken Array, Result shown in previous message, but you get only one item of the array. The key is the first item, the value is the last.
ST - Strange text, check THIS out (its always the same text):
array(1) {
[" occur between two tag values. A tag value may not
have a zero length. These constraints imply certain
restrictions on the contents of this object:
- There cannot be a leadingH?/"]=>
string(42) "interfaces.ifTable.ifEntry.ifDescr.6 = br0"
}
As i said, strange text....