Подтвердить что ты не робот

Что такое возвращаемое значение PHP exec()?

Я пытаюсь использовать функцию PHP exec().

Если аргумент return_var присутствует вместе с выходным аргументом, то статус возврата выполненной команды будет записан в это переменная.

Если выполнение выполнено успешно, оно равно 0. Однако, если есть ошибка, это может быть множество других целых чисел. Кажется, я не могу найти нигде, с чем соответствуют эти целые числа. Как интерпретировать целое число, которое я получаю?

Update:

Я действительно должен был указать это первоначально, но я выполняю другой PHP script. В отличие от rsync, который имеет значения выхода на своей странице руководства, я не могу найти эквивалент для PHP.

Так что я делаю что-то вроде:

$rv = exec('php file.php', $out, $rv);
4b9b3361

Ответ 1

Возвращаемое значение зависит от процесса/программы, которую вы запускали с помощью exec. Например, если вы запустили grep:

Статус выхода равен 0, если выбранные строки найдены, а 1, если нет найденный. Если произошла ошибка, статус выхода равен 2. (Примечание: POSIX код обработки ошибок должен проверять значение "2" или больше.)

rsync имеет около 20 различных кодов выхода ошибок, все из которых тщательно объясняются на странице руководства:

http://linux.die.net/man/1/rsync

да, это зависит от программы:)

Даже если вы используете PHP script, значение выхода зависит от самой вашей программы. По умолчанию скрипты php завершатся с 0. Если вы используете функцию выхода, вы можете возвращать разные коды выхода:

http://php.net/manual/en/function.exit.php

Если вы хотите экспериментально определить, что ваша программа php выйдет, вызовите ее в командной строке:

php file.php

то do

echo $?

это покажет вам значение выхода вашего php script.

Ответ 2

IMHO, перед тем как использовать функцию exec(), лучше установить параметры вывода и return_var и прочитать выполнение кода возврата return_var. Не полагайтесь на возвращаемое значение exec().

Ответ 3

Посмотрите страницу руководства для команды, которую вы выполняете. Это значение не имеет ничего общего с PHP, но фактическая команда.