Я тестирую php исполнительную команду:
и я возвращаю код результата 127.
Мой код php:
print "
executing 'hello':
";
exec ("hello", $output, $result);
var_dump($output);
print "
$result";
print "
end hello.";
print "
";
print "
executing 'dir':
";
exec("dir", $output2, $result2);
var_dump($output2);
print "
$result2";
print "
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 аргумент будет присутствовать наряду с выходным аргументом, то статус возврата выполняемой команды будет записан в эту переменную.
... но не имеет списка выходных возможностей или способа искать их.
Какие-либо предложения?
Коды возврата могут быть произвольными. В принципе, любое ненулевое возвращаемое значение является ошибкой. Вот список некоторых распространенных, но обычно, если вы не работаете с конкретной программой, проще просто предположить ненулевое значение = была обнаружена какая-то ошибка, а не пытаться сопоставить несколько разные программы с конкретными кодами ошибок.
Код возврата 127 означает Указанная процедура не может быть найдена.
Если вы работаете в Windows, Коды системных ошибок Windows
exec () работает с внешним файлом и получает код возврата оттуда или от операционной системы. Если 127 поступает из операционной системы, это означает, что файл не был найден по указанному вами пути.
Если, с другой стороны, 127 поступает из приложения, которое вы запускаете, вам нужно будет проверить документацию для этого приложения, чтобы узнать, что это означает.
Возвращаемые значения совершенно произвольны. Когда вы пишете программу, вы можете сделать так, чтобы она возвращала любое значение, которое вы хотите. В PHP это можно сделать с помощью языковой конструкции exit:
<?php
exit(33);
Вы можете узнать точный код состояния конкретной программы из ее документации (если автор действительно документировал ее). Однако, по общему мнению, 0 означает "ОК", а все остальное - "возникла проблема", поэтому проверки на нуль обычно достаточно.
В вашем случае, похоже, что вы пытаетесь выполнить несуществующую программу. PHP выполняет внешние программы через системную оболочку, поэтому значение, скорее всего, приходит из bash или любой другой оболочки по умолчанию. В Unix есть некоторые коды выхода со специальными значениями, и 127 означает команда не найдена.