A solução que encontrei é executar o comando em um sub-shell e, em seguida, gerar a saída stderr
to stdout
. Dessa forma, o $output
é bem preenchido.
i.e. :
exec("(mysqldump -u$username -p$password $database $tables > $dump_name) 2>&1", $output, $result);
var_dump($result);
echo "<br />";
var_dump($output);
echo "<br />";
A saída:
int(6)
array(1) { [0]=> string(46) "mysqldump: Couldn't find table: "table_name"" }
Espero que ajude!