Мы обновили машину с PHP 5 до PHP 7.2.5 и заметили, что одна из функций, которые мы используем постоянно, на самом деле больше не работает. Обратите внимание на вывод, что snmprealwalk помещает только один из объектов в массив. Где как snmpwalk (как в Linux & PHP) правильно извлекает оба объекта.
Это вывод net-snmp:
[meh@nessie html]# snmpwalk -v1 -c public@732 192.168.1.2 .1.3.6.1.2.1.17.4.3.1.2
BRIDGE-MIB::dot1dTpFdbPort.'......' = INTEGER: 800
BRIDGE-MIB::dot1dTpFdbPort.'......' = INTEGER: 1793
Это скрипт PHP:
<?php
$vlannum = 732;
$switch = "192.168.1.2";
$physifary = snmprealwalk($switch, "public@$vlannum", ".1.3.6.1.2.1.17.4.3.1.2");
$physifaryz = snmpwalk($switch, "public@$vlannum", ".1.3.6.1.2.1.17.4.3.1.2");
var_dump($physifary);
var_dump($physifaryz);
выход
array(1) {
["BRIDGE-MIB::dot1dTpFdbPort.'......'"]=>
string(13) "INTEGER: 1793"}
array(2) {
[0]=>
string(12) "INTEGER: 800"[1]=>
string(13) "INTEGER: 1793"}
Задача ещё не решена.
Других решений пока нет …