0

我在循环中运行一个简单的命令,命令本身是 ffmpeg,但我不相信它与问题有关,所以,我有:

exec($exec.' 2>&1', $output, $return);
if($return)
{
    foreach($output as $line)
    {
      file_put_contents($log_file, $line, FILE_APPEND);
    }
}

这样,如果命令出现任何问题,我可以读取日志中的输出。它可以工作,但是 $output 包含命令的整个 shell 历史记录。澄清一下:每次发生错误时,特定命令生成的所有输出(包括全天的数百次成功执行)都会转储到文件中。应该写入 5 行错误的是整个 1000 多行历史记录。我在 CentOS 上使用了完全相同的代码,它只给了我最近执行的实例生成的输出的预期输出。

4

1 回答 1

0

文档中:

请注意,如果数组已经包含一些元素,则exec()将附加到数组的末尾。如果您不希望函数附加元素,请在将数组传递给exec()之前在数组上调用unset( ) 。

我无法解释为什么它在 CentOS 上的工作方式不同。

于 2013-08-15T05:44:55.487 回答