Проблема была в пути MIBDIRS.
Я следовал за php docs, и он говорит: The Windows distribution of Net-SNMP contains support files for SNMP in the mibs directory. This directory should added to Windows' environment variables, as MIBDIRS, with the value being the full path to the mibs directory: e.g. c:\usr\mibs.
Проблема в том, что я не смог найти c:\usr\mibs
на моей net- snmp, поэтому я использовал C:\usr\share\snmp\mibs
.
Решение:
Я попытался использовать устройство с поддержкой snmp вместо 127.0.0.1 и запустил snmpget
в cli и подтвердил, что установка net-snmp действительно работает. Я решил, что проблема должна быть связана с тем, что php использует для запуска snmp.
Поэтому я использовал where snmpget
, чтобы проверить путь к команде, а затем изменил значение среды MIBDIRS с результатом C:\usr\bin\snmpget.exe
svec->v[cur]='\0'; strcat(svec->v,CHG);
Это заменяет char в позиции [cur] на svec-> v char * завершающим нулевым байтом, чтобы использовать на нем strcat.
Из man strcat:
Функция strcat () добавляет строку src к строке dest, перезаписывая завершающий нулевой байт ('\ 0') в конце of dest, а затем добавляет завершающий нулевой байт.
blockquote>Если у "dest char *" в strcat отсутствует завершающий нулевой байт, поведение strcat непредсказуемо. Это служит безопасностью.
svec->v[cur]=l->lchar;
Это написано так, потому что «svec» и «l» являются указателями, следовательно, вам нужно использовать их для доступа к их данным.
Надеюсь, это поможет!