【问题标题】:PHP - Discover if Debian package existsPHP - 发现 Debian 软件包是否存在
【发布时间】:2011-06-22 21:45:09
【问题描述】:

我希望能够发现我们的生产服务器上是否安装了 Debian 软件包,其功能应该类似于 extension_loaded()。

谁能推荐一个方法?我只能假设我应该使用 exec() 并解析“找不到命令”的返回值,但我想知道是否有更安全/更好的选择。

【问题讨论】:

    标签: php linux unix package


    【解决方案1】:

    如果您有执行权限,则可以使用以下方法之一:

    whereis packagename
    
    apt-cache policy packagename
    

    【讨论】:

    • 在这种情况下,我确实可以访问exec,而我喜欢使用whereis 而不是我的方法的原因是,如果有人以某种方式检查shutdown -h 0 是否存在,服务器就会死机!谢谢!
    【解决方案2】:

    您可以为此编写一个简单的 API。它应该执行以下操作;

    • 让 php 将所需的包写入 xml 文件、文本文件或数据库,任何您可以使用 shell 应用程序、perl 应用程序或其他任何方式读取的内容。
    • 在服务器级别,读取文件、数据库,检查包是否存在并在输出文件、数据库表或其他任何内容中返回值。
    • 用php读出输出文件并展示给你的用户

    上面提出的解决方案的缺点是它需要一些时间,例如。您无法实时检查包的可用性。如果这实际上是强制性的,您可以编写一个不接受任何输入的 php 脚本,但会从数据库或文本文件中读出应该检查的包,其中的值已经过广泛测试,例如。使用正则表达式。通过这种方式,您可以确定恶意用户无法注入 shell 命令。

    【讨论】:

    • 非常感谢您的回答,当然是一种有效的方法,但在这种情况下,最好立即回复。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多