使用 php 系统命令调用时处理 jpegtran 的错误输出


Handling error output of jpegtran when called with php system command

    $cmd = 'jpegtran a.jpg > b.jpg';
    system($cmd);
    $newsize = filesize('b.jpg');
    if($newsize != 0) {
       copy('b.jpg','a.jpg');
    }

我想在一堆图像上运行 jpegtran,只有在命令成功时才将输出复制到原始文件。

当我运行上面的php代码时,对于某些图像,我会收到诸如" jpg文件过早结束"或"空输入文件"等错误。

如何捕获这些错误并在代码中采取相应的措施?

>我不确定jpegtran如何在错误时返回,但更常见的是,错误时的返回代码与 0 不同。

如果是这样,您可以使用exec() - http://php.net/manual/en/function.exec.php 而不是system(),并在return_var中得到jpegtran的结果,如下所示:

exec('jpegtran a.jpg > b.jpg', $result, $return_var);
if( $return_var ) {
  // Error log here
}

编辑:我也忘记了system()退货return_var。因此,同样的事情也可以通过system('jpegtran a.jpg > b.jpg', $return_var);