PHP SNMP - Не удается найти модуль
Я включил модуль SNMP, пытаясь выполнить функции в модуле. Я установил переменную среды MIBDIRS туда, где у меня есть мои mib, но я все еще получаю эти предупреждения "Не удается найти модуль":
Cannot find module (IP-MIB): At line 0 in (none)
Cannot find module (IF-MIB): At line 0 in (none)
Cannot find module (TCP-MIB): At line 0 in (none)
Cannot find module (UDP-MIB): At line 0 in (none)
Cannot find module (HOST-RESOURCES-MIB): At line 0 in (none)
Cannot find module (SNMPv2-MIB): At line 0 in (none)
Cannot find module (SNMPv2-SMI): At line 0 in (none)
Cannot find module (NOTIFICATION-LOG-MIB): At line 0 in (none)
Cannot find module (UCD-SNMP-MIB): At line 0 in (none)
Cannot find module (UCD-DEMO-MIB): At line 0 in (none)
Cannot find module (SNMP-TARGET-MIB): At line 0 in (none)
Cannot find module (NET-SNMP-AGENT-MIB): At line 0 in (none)
Cannot find module (DISMAN-EVENT-MIB): At line 0 in (none)
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in (none)
Cannot find module (UCD-DLMOD-MIB): At line 0 in (none)
Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in (none)
Cannot find module (SNMP-MPD-MIB): At line 0 in (none)
Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
Cannot find module (SNMP-NOTIFICATION-MIB): At line 0 in (none)
Cannot find module (SNMPv2-TM): At line 0 in (none)
Я знаю, что однажды исправил это, но, похоже, не смогу исправить это снова...что еще я могу попробовать?
Я в Windows.
8 answers
По-видимому, вы можете установить 2 переменные среды. Один из них - MIBDIRS
, где находятся все файлы MIB. Другой - MIBS
, который, как я полагаю, является тем, какие модули SNMP вы хотите загрузить. Установив MIBS
в ALL
, я смог избавиться от ошибок.
У меня такая же проблема в Ubuntu с php7.1, и решением была установка пакета snmp
apt-get install snmp
В linux я смог исправить это, добавив это в свой файл /etc/php5/apache2/conf.d/snmp.ini.
Mibdir=/usr/общий доступ/snmp/mib
mib=все
Откройте свой php.ini
и добавьте волшебную точку с запятой в строке, которая выглядит так:
extension=php_snmp.dll
Это должно выглядеть так:
;extension=php_snmp.dll
Пакет php не включает папку mib, все, что вам нужно сделать, это загрузить исходный файл net-snmp и скопировать папку в свой каталог php
Ссылка для скачивания https://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.3/
После этого распакуйте zip-файл и скопируйте папку mib в свой каталог php
Для примера скопируйте его в C:\PHP\Extras\mibs
Затем добавьте новую системную переменную под названием MIBDIRS. Его значение должно быть: C:\PHP\Extras\mibs
Наконец, вы можете запустить php -m
И ваш выпуск будет отправлен повторно
Я только что исправил это на своей машине, добавив
mibdirs +/var/lib/mibs/iana:/var/lib/mibs/ietf
К /etc/snmp/snmp.conf
.
Столкнулся с аналогичной проблемой, но в Ubuntu -
В файле /etc/snmp/snmp.conf -
# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loading them by commenting out the following line.
#mibs :
Итак, закомментировав строку mib в этом файле, мы решили эту проблему.
Наткнулся на этот перенос старых кактусов в Ubuntu 16.
В пакете Ubuntu/Debian php-snmp
зависит от php7.0-snmp
, ни один из которых не поставляется с MIB или не зависит от snmp-mibs-downloader
, следовательно, модуль SNMP перестает функционировать без доступных MIB.
Что вам следует сделать, так это установить snmp-mibs-downloader
(или эквивалент) и позволить ему загрузить все доступные MIB и посмотреть, поможет ли это. Если это не так, вам может потребоваться настроить mibdirs
в /etc/php/x.x/mods-available/snmp.ini
и/или вручную загрузить необходимые MIB (загрузка всего через mibs = ALL
будет работа, но я считаю это плохой практикой).
Если загрузчик недоступен, следуйте совету @Robin и получайте MIB от Net-SNMP