Параметр $ output не работает, если вызывающая программа выплевывает вывод в STDERR.
Лучший способ справиться с этим - перенаправить вывод из exec в файл и затем отобразить содержимое этого файла в случае возникновения ошибки.
Если $ cmd содержит команду exec, добавьте что-то вроде этого:
$cmd.=" > $error_log 2>&1"
Затем проверьте содержимое спецификации файла в $ error_log для получения подробной информации о том, почему команда завершилась неудачно.
Также обратите внимание, что если вы отключите это с помощью & в конце команды, немедленная проверка содержимого $ error_log может не раскрыть информацию журнала - скрипт может проверить / обработать файл до завершения работы ОС .