【发布时间】:2011-06-22 21:45:09
【问题描述】:
我希望能够发现我们的生产服务器上是否安装了 Debian 软件包,其功能应该类似于 extension_loaded()。
谁能推荐一个方法?我只能假设我应该使用 exec() 并解析“找不到命令”的返回值,但我想知道是否有更安全/更好的选择。
【问题讨论】:
我希望能够发现我们的生产服务器上是否安装了 Debian 软件包,其功能应该类似于 extension_loaded()。
谁能推荐一个方法?我只能假设我应该使用 exec() 并解析“找不到命令”的返回值,但我想知道是否有更安全/更好的选择。
【问题讨论】:
如果您有执行权限,则可以使用以下方法之一:
whereis packagename
apt-cache policy packagename
【讨论】:
exec,而我喜欢使用whereis 而不是我的方法的原因是,如果有人以某种方式检查shutdown -h 0 是否存在,服务器就会死机!谢谢!
您可以为此编写一个简单的 API。它应该执行以下操作;
上面提出的解决方案的缺点是它需要一些时间,例如。您无法实时检查包的可用性。如果这实际上是强制性的,您可以编写一个不接受任何输入的 php 脚本,但会从数据库或文本文件中读出应该检查的包,其中的值已经过广泛测试,例如。使用正则表达式。通过这种方式,您可以确定恶意用户无法注入 shell 命令。
【讨论】: