【问题标题】:Testing if a program is installed using PHP测试是否使用 PHP 安装程序
【发布时间】:2009-05-28 02:28:50
【问题描述】:

对于我正在处理的特定 PHP 脚本,我将使用对 Lynx Web 浏览器的系统调用将 HTML 转换为纯文本并捕获输出:

$text = `lynx -dump stackoverflow.com`;

/*
#[1]Stack Overflow [2]RSS

[3]login | [4]about | [5]faq
____________________________
[6]logo homepage
  * [7]Questions
  * [8]Tags
  * [9]Users
  * [10]Badges
*/

但是,我想做的是优雅地回退到不同的方法,以防 Lynx 在服务器上不可用。 如何检查程序是否存在于您的 PATH 中?哦,它需要在 Windows 和 Linux 上都运行... :p

我不是在写 SO 屏幕抓取工具,别担心……

【问题讨论】:

    标签: php windows linux system


    【解决方案1】:

    在 Linux 中我会使用 which

    which linx
    

    不知道窗户。您可能会看到调用不存在的应用程序时收到的错误消息是什么,我希望它是一个非常恒定的
    (希望不是蓝屏,那你就得用点方法给屏幕选色了:-D)

    【讨论】:

    • 你也可以在 windows 上安装 'which'。
    【解决方案2】:

    一种可能的解决方案是使用 popen 函数。尝试从 lynx 打开输入管道。如果它返回 false,您可以使用您的回退方法。请查看the PHP popen function documentation 了解详细信息和实现示例。

    我刚刚注意到这是针对 Windows 的,因此,我将不得不使用我的后备并说您的里程会有所不同。如果您想确保 lynx 实用程序可用,我建议您确保它在那里并且您(和您的脚本)知道它在哪里。指向脚本执行的先决条件位置的配置文件没有任何问题。

    【讨论】:

      【解决方案3】:

      为什么不使用 curl_* 函数或 fopen 甚至 fsockopen

      实际上,对于页面转储 file_get_contents 就足够了(allow_url_fopen 应该在您的 php 配置中启用)。

      阅读 php.net 上的相应手册以获取更多信息。

      【讨论】:

      • Lynx 将 html 页面转换为格式良好的纯文本。 file_get_contents() 没有。
      • lyxn on windows...呵呵-祝你好运。我认为,strip_tags 会帮助你。
      • 好吧,如果你确实需要 lynx - 那么在 *nix 下并且不知道 win ......也许谷歌关于注册表访问,但我不确定你是否会找到足够成熟的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2011-04-02
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      相关资源
      最近更新 更多