Ответ 1
Второй аргумент $output
записывает только STDOUT
из вашего исполняемого файла. Сообщения об ошибках обычно отправляются на STDERR
, так что они легко могут быть записаны в журнал ошибок или аналогичные, но это означает, что вы не увидите их, когда вызываете exec
.
Если это Linux-система, вы можете добавить 2>&1
в свою команду, чтобы перенаправить STDERR
в STDOUT
. Я не пробовал это, но он должен пересылать сообщения об ошибках в вашу переменную $output.
Edit:
Я читал об этом на www.php.net/exec, и, похоже, это сработает.
exec($file.' 2>&1', $outputAndErrors, $return_value);
Также можно перенаправить ошибки во временный файл и прочитать их отдельно.
exec($file.' 2> '.$tmpFile, $outputOnly, $return_value);
Изменить 2
Кажется, что окна также используют этот синтаксис перенаправления вывода стиля Bourne, поэтому примеры также должны работать и для окон.