在PHP中运行$a = snmpwalkoid("192.168.1.250","public","1.3.6.1.4.1.9.9.46.1.3.1.1.2.1.1"); 
没有返回值,$a = snmpwalkoid("192.168.1.250","public","1.3.6.1.4.1.9.9.46.1.3.1.1.2.1"); 
这一行则返回所有VLAN
 在命令行运行snmpwalk -c public 192.168.1.250 -v1 1.3.6.1.4.1.9.9.46.1.3.1.1.2.1.1
输出VLAN1,指定了SNMP版本的,PHP里咋指定版本哪

解决方案 »

  1.   

    版本号不是通过参数设置的,而是写死在函数名中了,ext/snmp/php_snmp.h 文件中有函数名列表,
    函数名中带数字的,表示版本号,不带数字就是版本1
    PHP_MINIT_FUNCTION(snmp);
    PHP_MSHUTDOWN_FUNCTION(snmp);
    PHP_MINFO_FUNCTION(snmp);PHP_FUNCTION(snmpget);
    PHP_FUNCTION(snmpgetnext);
    PHP_FUNCTION(snmpwalk);
    PHP_FUNCTION(snmprealwalk);
    PHP_FUNCTION(snmp_get_quick_print);
    PHP_FUNCTION(snmp_set_quick_print);
    PHP_FUNCTION(snmp_set_enum_print);
    PHP_FUNCTION(snmp_set_oid_output_format);
    PHP_FUNCTION(snmpset);PHP_FUNCTION(snmp2_get);
    PHP_FUNCTION(snmp2_getnext);
    PHP_FUNCTION(snmp2_walk);
    PHP_FUNCTION(snmp2_real_walk);
    PHP_FUNCTION(snmp2_set);PHP_FUNCTION(snmp3_get);
    PHP_FUNCTION(snmp3_getnext);
    PHP_FUNCTION(snmp3_walk);
    PHP_FUNCTION(snmp3_real_walk);
    PHP_FUNCTION(snmp3_set);PHP_FUNCTION(snmp_set_valueretrieval);
    PHP_FUNCTION(snmp_get_valueretrieval);PHP_FUNCTION(snmp_read_mib);