コマンド自体は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 でまったく同じコードを使用したところ、最後に実行されたインスタンスによって生成された出力のみの期待される出力が得られました。