Коды возврата PHP_var? - PullRequest
       7

Коды возврата PHP_var?

23 голосов
/ 09 февраля 2010

Я тестирую команду php exec:

http://php.net/exec

и я возвращаю код результата 127.

Мой php код:

<?

print "<br>executing 'hello':<br><b>";
exec ("hello", $output, $result);
var_dump($output);
print "<br>$result";
print "<br></b>end hello.";


print "<br><hr><br>";


print "<br>executing 'dir':<br><b>";
exec("dir", $output2, $result2);
var_dump($output2);
print "<br>$result2";
print "<br></b>end dir.";

?>

И вывод:

executing 'hello':
array(0) { } 
127
end hello.


executing 'dir':
array(2) { [0]=> string(42) "bs1.jpg hello  index.htm ml1_1.jpg pp1.jpg" } 
0
end dir.

Документация php (насколько я мог найти) гласит:

return_var

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

... но нет списка возможностей вывода или способа их поиска.

Есть предложения?

Ответы [ 4 ]

23 голосов
/ 09 февраля 2010

Коды возврата могут быть немного произвольными.В принципе, любое ненулевое возвращаемое значение является ошибкой. Вот список некоторых распространенных, но, как правило, если вы не работаете с конкретной программой, проще предположить, что она не равна нулю = обнаружена какая-то ошибка, а не попытка отобразить числоразные программы с конкретными кодами ошибок.

10 голосов
/ 09 февраля 2010

Код возврата 127 означает Указанная процедура не найдена.

Если вы работаете в Windows, Коды системных ошибок Windows

3 голосов
/ 09 февраля 2010

Возвращаемые значения являются абсолютно произвольными. Когда вы пишете программу, вы можете заставить ее возвращать любое желаемое значение. В PHP вы можете сделать это с помощью языковой конструкции exit :

<?php
exit(33);

Вы можете узнать точный код состояния для определенного программного обеспечения в его документации (учитывая, что автор фактически задокументировал это). Тем не менее, существует общее согласие, что 0 означает «ОК», а все остальное означает «возникла проблема», поэтому проверки на ноль обычно достаточно.

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

1 голос
/ 09 февраля 2010

exec () работает с внешним файлом и получает код возврата оттуда или из операционной системы.Если 127 поступает из операционной системы, это означает, что файл не найден в указанном вами пути.

Если, с другой стороны, 127 поступает из запущенного вами приложения, вынеобходимо проверить документацию для этого приложения, чтобы понять, что оно означает.

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