exec () (или подобные функции) возвращают вывод ошибок - PullRequest
2 голосов
/ 27 августа 2010

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

// This is a file that doesn't exists, for testing
$command = './path/to/non/existing/script.sh';

$commandOutput = exec($command, $commandOutput); // works but no error output
//passthru($command, $commandOutput); // works but error output was 127 not file not found
//$commandOutput = escapeshellcmd($command);
echo "The Output:\n|".$commandOutput."|\n";
var_dump($commandOutput);

The Output:

||

Я хотел бы получить сообщение об ошибке:

The Output:

|file not found|

Как или какая функция / параметр сделает это?

Ответы [ 2 ]

6 голосов
/ 27 августа 2010

Вы можете перенаправить stderr в stdout, чтобы exec () и другие извлекали сообщения об ошибках, добавляя 2>&1 к вашей команде.

см. http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

1 голос
/ 27 августа 2010

Попробуйте:

ob_start();
passthru($command);
$content_grabbed=ob_get_contents();
ob_end_clean();

echo $content_grabbed;

Второй параметр предназначен для возврата состояния команды, отправленной в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...