【问题标题】:PHP: how do I clean shell_exec('mplayer ./sound.mp3') unwanted output from console?PHP:如何从控制台清除 shell_exec('mplayer ./sound.mp3') 不需要的输出?
【发布时间】:2014-09-24 09:16:42
【问题描述】:

我有 PHP CLI 应用程序。我在错误时通过 mplayer 播放声音:

ob_start();
shell_exec('mplayer ./SadTrombone.mp3');
ob_end_Clean();

声音还可以,但 ob_end_clean() 在这里不起作用 - 我得到以下输出:

【问题讨论】:

  • 请将代码示例作为文本发布,而不是屏幕截图。人们通常会希望复制/粘贴其中的元素以方便回答您的​​问题。
  • 好的,我用代码删除了那个截图。

标签: php shell ubuntu-12.04 command-line-interface mplayer


【解决方案1】:

您可以通过将 STDOUT 和 STERR 的输出重定向到 /dev/null 来防止命令中不需要的输出出现在控制台上,如下所示:

shell_exec('mplayer ./SadTrombone.mp3 > /dev/null 2>&1'); 

【讨论】:

  • thnx! it worked。不知道为什么 ob_* 函数在这里不起作用。
  • @iVenGO 它没有被输出缓冲区捕获的原因是消息被写入了子进程的标准错误。如果您想在shell_exec() 返回的字符串中捕获该数据,请将2>&1 附加到命令(这会将stderr 输出附加到stdout)。有关standard I/O streamsI/O redirection 的更多信息。另请注意,shell_exec() 用于将输出返回给 PHP,如果您只想执行文件而不关心输出,请使用 exec()
猜你喜欢
  • 1970-01-01
  • 2021-12-10
  • 2011-02-28
相关资源
最近更新 更多