проверить вывод php exec всегда возвращает пустой массив

Я конвертирую некоторые фильмы и хочу, чтобы конверсия прошла без ошибок:

exec("ffmpeg -i ".$orgVideoFile." -vcodec libx264 -crf 21 -acodec aac -ac 2 -ab 192000 -strict experimental -vpre hq -vpre veryfast -refs 3 -threads 4 -s 320x240 ".$newVideoFile, $output); echo "Output:"; var_dump($output); 

но при проверке $ output его всегда пусто:

 Output:array(0) { } 

Как проверить, чтобы все прошло нормально?

У вас будет гораздо больше контроля с помощью функции proc_open PHP. Это позволяет вам писать / читать стандартный ввод / вывод в очень контролируемом режиме:

 $tunnels=array( 0 => array('pipe','r'), // Process std input 1 => array('pipe','w'), // Process std output 2 => array('pipe','w') // Process std error ); $io=array(); $resource=proc_open("command with parameters...etc",$tunnels,$io); if(!is_resource($resource)) { // Throw exception or something... } // Write to process standard input and close stream fwrite($io[0],"Some data..."); fclose($io[0]); // We are not interested in process standard output.. close it fclose($io[1]); // Get process std error $errors=stream_get_contents($io[2]); fclose($io[2]); // Close process reousrce $result=proc_close($resource); if($result != 0) { // There where errors. Grab the error string from $errors } 
 exec('ffmpeg ...', $output, $return); if ($return != 0) { // an error occurred } 

использовать функцию php

 system(); 

вместо. Вместо того, чтобы просто получить код выхода, вы можете сравнить вывод ffmpeg с желаемым значением.