PHP SNMP - 找不到模块

17

我已经启用了SNMP模块,尝试使用该模块中的函数。 我已将MIBDIRS环境变量设置为我的mibs所在的位置,但仍然收到“找不到模块”的警告:

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。

9个回答

12

显然有两个可以设置的环境变量。 其中一个是MIBDIRS,用于存储所有MIB文件的位置。 另一个是MIBS,我相信这是您要加载的SNMP模块。 通过将MIBS设置为ALL,我成功地摆脱了错误。


这类似于bash环境和net-snmp工具(不确定它们是否与此相关)。很高兴你找到了答案。 :) - Colby Blair
我相信PHP在后台使用Net-SNMP,所以我想这就是为什么它与你熟悉的net-snmp工具类似的原因 :) - PLui

10

我在Ubuntu上使用php7.1时遇到了同样的问题,解决方案是安装snmp包。

apt-get install snmp

9
打开你的 php.ini 文件,并在一些看起来像这样的行末尾添加一些神奇的分号:
extension=php_snmp.dll

它应该看起来像这样:
;extension=php_snmp.dll

2
如果我不需要SNMP,那就没错了,但在这种情况下,我实际上需要它。我想我可能已经找到了一个解决方法。让我回答自己的问题。谢谢! - PLui
你看到如何安装SNMP了吗?在这里看看:http://technet.microsoft.com/zh-cn/library/cc759570(v=ws.10).aspx - Wesley Schleumer de Góes
SNMP服务不是允许您在Windows机器上执行snmpget/snmpwalk吗?即监视Windows机器?如果是这样,那不是我想要做的。我想从Windows机器执行gets和walks,而不是到Windows机器。 - PLui
对我来说,情况恰好相反,如果我删除分号,我的AMPPS本地主机就会神奇地再次工作。谢谢。 - NLxDoDge

7

php软件包不包括mibs文件夹,需要下载net-snmp源文件,然后将该文件夹复制到php目录中。

下载链接:https://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.3/

之后,解压zip文件,并将mibs文件夹复制到php目录中。例如,复制到C:\PHP\Extras\mibs目录下。

然后添加一个名为MIBDIRS的新系统变量,其值应为:C:\PHP\Extras\mibs

最后,运行php -m命令,问题将得到解决。

以下是参考截图:enter image description here


我在Windows 10中遇到了相同的问题。它显示为:“MIB搜索路径:c:/usr/share/snmp/mibs”。因此,我将“Mibs”文件复制到该位置。但是那里并没有这样的位置。我必须在“c:usr”文件夹内创建“share/snmp”。 - white dark

6
在Linux系统中,我能够通过向我的/etc/php5/apache2/conf.d/snmp.ini文件添加以下内容解决此问题:
mibdir=/usr/share/snmp/mibs mibs=all

2
面临类似问题,但是在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 :

所以,在这个文件中注释掉mibs行就解决了问题。

2
我在我的电脑上通过添加以下内容解决了这个问题。
mibdirs +/var/lib/mibs/iana:/var/lib/mibs/ietf

to /etc/snmp/snmp.conf.


2

在将旧版Cacti迁移到Ubuntu 16时,发现了以下问题。

在Ubuntu/Debian软件包中,php-snmp依赖于php7.0-snmp,但两者都不带有MIBs或依赖于snmp-mibs-downloader,因此SNMP模块最终无法使用,没有可用的MIBs。

您应该安装snmp-mibs-downloader(或等效物)并让它下载所有可用的MIBs,看看是否有所帮助。如果没有,请尝试调整/etc/php/x.x/mods-available/snmp.ini中的mibdirs,或手动加载所需的MIBs(通过mibs = ALL加载所有内容会起作用,但我认为这是不好的做法)。

如果没有可用的下载器,请遵循@Robin的建议,从Net-SNMP获取MIBs。


1

我在php.ini中把extension=snmp改为; extension=snmp


你的回答目前写得不够清楚。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。您可以在帮助中心中找到有关编写良好答案的更多信息。 - Community
这对我来说完美地起作用了。对于在Windows 10上使用XAMPP的人来说,在XAMPP控制面板窗口中,点击Apache服务旁边的“Config”来编辑“php.ini”文件。进行建议的更改,然后重新启动Apache服务。 - MLK.DEV
这对我来说完美地运作了。对于在Windows 10上使用XAMPP的人,单击XAMPP控制面板窗口中Apache服务旁边的“Config”以编辑“php.ini”文件。进行建议的更改,然后重新启动Apache服务。 - MLK.DEV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接