Что такое возвращаемое значение PHP exec()?
Я пытаюсь использовать функцию PHP exec().
Если аргумент return_var присутствует вместе с выходным аргументом, то статус возврата выполненной команды будет записан в это переменная.
Если выполнение выполнено успешно, оно равно 0. Однако, если есть ошибка, это может быть множество других целых чисел. Кажется, я не могу найти нигде, с чем соответствуют эти целые числа. Как интерпретировать целое число, которое я получаю?
Update:
Я действительно должен был указать это первоначально, но я выполняю другой PHP script. В отличие от rsync, который имеет значения выхода на своей странице руководства, я не могу найти эквивалент для PHP.
Так что я делаю что-то вроде:
$rv = exec('php file.php', $out, $rv);
Ответы
Ответ 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, но фактическая команда.