【问题标题】:Calling gnuwin's grep from php returns null从 php 调用 gnuwin 的 grep 返回 null
【发布时间】:2013-11-18 11:23:51
【问题描述】:

我在 Windows 7 上工作。我尝试从像 var_dump(shell_exec("grep")) 这样的 PHP 脚本中执行 Gnuwin32 grep 命令,所以我可以看看它是否有效。而不是usage: 的预期输出和类似的东西我得到null

  • C:\gunwin\bin 在我的 Windows 路径和 PHP include_path
  • grep 从命令行工作
  • shell_exec('dir')(或任何其他“常规”Windows 环境命令)按预期工作

我确定我在这里遗漏了一些明显的东西,但我不知道它是什么。有人有什么建议吗?

编辑:发生了一些奇怪的事情。我试过shell_exec('wget'),只是为了它。这按预期工作。之后,我尝试了shell_exec('grep --help'),这实际上返回了我期望的输出。我现在有点困惑。

【问题讨论】:

  • 您是否尝试过使用完整路径,即。 c:\gnuwin\bin\grep.exe?
  • @Maerlyn 是的,我做到了,结果相同

标签: php windows grep shell-exec gnuwin32


【解决方案1】:

grep,不带参数,在 stdout 中不写入任何内容,但在 stderr 上显示两行(指示使用 --help),shell_exec 不返回。

【讨论】:

  • +1 进行解释。你能告诉我为什么wget 不是这样吗?这里有一些不一致的地方吗?
  • 不确定是否不一致,但可以确定围绕不同工作模式的不同设计。虽然 wget 可以使用 stdin 或 stdout 进行信息的输入/输出,但“正常”用法是将参数作为参数并输出到文件,因此可以输出到控制台。 grep 的“通常”用法意味着从标准输入读取并输出到标准输出(但可以像 wget 一样操作),因此输出到标准错误以显示信息似乎合乎逻辑,不会干扰数据(只是一种意见)。
猜你喜欢
  • 2013-10-12
  • 1970-01-01
  • 2013-05-15
  • 2016-11-21
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多