如何将调用程序的输出重定向到文件?

时间:2013-04-26 16:29:59

标签: php shell ffmpeg io-redirection

我有一些PHP代码,除其他外,使用system()调用ffmpeg来编码视频。当我从命令行运行它时,我可以用通常的方式将PHP脚本的输出重定向到文件 - php mycode.php > mycode.log - 我不仅得到我在PHP中调用的任何打印语句,而且还得到由ffmpeg制作的东西,我想要的。一切都很好。

然而,现在,我想通过网页在后台启动PHP脚本:我在我的网站上做了一些导致它运行的东西:

$the_command = "/bin/php $php_file_name > $log_file_name &";
$the_result = system($the_command, $retval);

这在后台PHP过程中成功运行我的脚本,我的视频仍然由ffmpeg编码。但是,我在重定向日志文件中唯一得到的是脚本中的print语句 - ffmpeg调用的输出将被发送到以太网的某个地方。有什么方法可以将这些保存在日志文件中吗?

2 个答案:

答案 0 :(得分:1)

恕我直言 - 因为ffmpeg将其消息写入stderr。所以,试试类似:

$res = shell_exec("ffmpeg your_args >/tmp/log 2>&1 &");

这应该将stdoutstderr重定向到文件。

答案 1 :(得分:1)

试试这个:

$the_command = "/bin/php $php_file_name > $log_file_name 2>&1";