PHP如何检测shell_exec()命令是否执行失败

5
我正在使用 PHP 的 shell_exec() 在执行 ffmpeg 命令,以将列表中的多个视频转换。有没有办法在视频转换过程中检测到错误发生(或者至少验证它完全完成了转换)?
我不想在出现错误时停止转换其他视频,只想记录下错误。
<?php
    shell_exec('ffmpeg -i downloads/flv/file1.flv -vcodec libvpx -acodec libvorbis downloads/webm/file1.webm');

    if(error) {
     //run a command here to report the error (ie. MySQL or email)
    }
?>

你是否在寻找来自FFmpeg的错误返回? - user557846
shell_exec返回执行命令的输出,如果ffmpeg打印错误,您应该能够解析它。 - user529649
如何获取FFmpeg返回的错误? - Hitesh
2个回答

14

使用类似于exec的另一个系统调用函数来捕获退出代码:

exec('ffmpeg ...', $output, $return);

if ($return != 0) {
    // an error occurred
}

优秀的工具在出错时会以非0的代码退出。


或者检查 if ($return != 1)。1 表示错误,0 表示无错误退出代码。在执行命令后,您可以直接在 Unix CLI 中使用 echo "$?" 进行调试。 - Stephan Kristyn
1
好的,“0”表示“全部正常”,而“除了‘0’以外的任何值”都表示“错误”。除了“1”之外,还有更多的错误代码。我不知道ffmpeg是否使用除01以外的其他值。 - deceze

-2
$return=shell_exec('ffmpeg ...');

if ($return) { //look at what it returns do what you will with the data

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接