0

我有一些 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 编码。但是,我在重定向日志文件中得到的唯一内容是脚本中的打印语句——ffmpeg 调用的输出被发送到某个地方的以太。有什么方法可以将这些也保存在日志文件中?

4

2 回答 2

1

恕我直言 - 因为 ffmpeg 将其消息写入stderr. 因此,请尝试以下操作:

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

这应该将stdout和重定向stderr到文件。

于 2013-04-26T18:15:19.680 回答
1

试试这个:

$the_command = "/bin/php $php_file_name > $log_file_name 2>&1";
于 2013-04-26T18:15:20.603 回答