Из любопытства, что здесь происходит?
Либо я очень устал, либо я вижу только одно отличие: во втором exec используется строка, а в предыдущем - переменная той же строки.
// код
$command = "sudo /bin/mount /dev/sdd1 /a 2>&1";
echo "[mountDev] command=$command\n";
exec($command,$ouput,$ret_val);
debugArr("mountDev",$output,$ret_val);
$new_command="sudo /bin/mount /dev/sdd1 /a 2>&1";
echo "[mountDev] comman2=$new_command\n";
exec("sudo /bin/mount /dev/sdd1 /a 2>&1",$output,$ret_val);
// error handling
debugArr("mountDe2",$output,$ret_val);
// выход
[mountDev] device=/dev/sdd1
[mountDev] command=sudo /bin/mount /dev/sdd1 /a 2>&1
[mountDev] output=
[mountDev] retval=32
[mountDev] comman2=sudo /bin/mount /dev/sdd1 /a 2>&1
[mountDe2] output=Array
(
[0] => mount: you must specify the filesystem type
)
[mountDe2] retval=32