Как игнорировать ошибки в shell exec?
Я получаю вывод команды оболочки на PHP в виде
$str = shell_exec("command");
И запустите PHP-скрипт в терминале. Когда shell command
вернет ошибку, она будет напечатана на терминале. Как я могу сказать shell_exec
возвращать только вывод команды без вывода ошибок?
3 answers
Вам просто нужно отменить вывод ошибок, перенаправив stderr
на /dev/null
$str = shell_exec("command 2>/dev/null");
Безошибочный вывод - stdout
- будет сохранен в $str
, как и раньше.
Обратите внимание, что вам не нужно подавлять ошибки в shell_exec
с помощью оператора @
или оборачивать его в try
-catch
блок, так как shell_exec
не завершается ошибкой (у вас нет ошибки во время выполнения PHP).
Именно команда, которую требуется выполнить, может привести к ошибкам, описанный выше подход будет подавлять ошибки в результат.
Также some-command > /dev/null 2>&1
, как и другие предложенные , это не то, что вы хотите (если я правильно понял ваш вопрос), поскольку это отбросит как ошибку, так и вывод без ошибок .
A Заключительное примечание : вы можете решить поймать/отбросить stdout
и/или stderr
.
Конечно, вы должны полагаться на тот факт, что команда, которую вы запускаете, отправляет регулярные выходные данные в stdout
и ошибки в stderr
. Если команда не соответствует стандарту (например, отправляет все для stdout
) тебе не повезло.
Если вы хотите игнорировать ошибки своей команды, вам нужно изменить свою команду, чтобы перенаправлять ошибки следующим образом:
some-command > /dev/null 2>&1
Вы также можете сделать это в начале своего кода:
ini_set( 'display_errors', 0 );
error_reporting( E_ALL );
Если вы установите 0, вы не увидите ошибок, если вы установите 1, вы увидите все ошибки