0

コマンド自体はffmpegであるループで簡単なコマンドを実行していますが、それが問題に関連しているとは思わないので、次のとおりです。

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

このようにして、コマンドで問題が発生した場合、ログで出力を読み取ることができます。動作しますが、 $output にはコマンドのシェル履歴全体が含まれています。明確にするために、エラーが発生するたびに、特定のコマンドによって生成されたすべての出力 (1 日を通して成功した数百の実行を含む) がファイルにダンプされます。書き込まれている 5 行のエラーは、代わりに 1000 行以上の履歴全体です。CentOS でまったく同じコードを使用したところ、最後に実行されたインスタンスによって生成された出力のみの期待される出力が得られました。

4

1 に答える 1

0

ドキュメントから:

配列にすでにいくつかの要素が含まれている場合、exec()は配列の最後に追加されることに注意してください。関数で要素を追加したくない場合は、配列をexec()に渡す前にunset()を呼び出します。

CentOS での動作が異なる理由を説明できません。

于 2013-08-15T05:44:55.487 に答える