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

PHP return_var коды?

Я тестирую команду 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 присутствует вместе с выходом аргумент, то статус возврата выполненная команда будет записана к этой переменной.

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

Любые предложения?

4b9b3361

Ответ 1

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

Ответ 2

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

Предполагая, что вы находитесь в Windows, Коды ошибок системы Windows

Ответ 3

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

<?php
exit(33);

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

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

Ответ 4

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

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