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 присутствует вместе с выходом аргумент, то статус возврата выполненная команда будет записана к этой переменной.
... но не имеет списка возможностей вывода или способа их поиска.
Любые предложения?
Ответы
Ответ 1
Коды возврата могут быть немного произвольными. В принципе, любое ненулевое возвращаемое значение является ошибкой. Вот список некоторых общих, но обычно, если вы не работаете с конкретной программой, проще просто принять ненулевое value = some была обнаружена ошибка, в отличие от попытки сопоставить ряд различных программ с конкретными кодами ошибок.
Ответ 2
Код возврата 127 означает, что указанная процедура не найдена.
Предполагая, что вы находитесь в Windows, Коды ошибок системы Windows
Ответ 3
Возвращаемые значения полностью произвольны. Когда вы пишете программу, вы можете заставить ее вернуть любое значение, которое вы хотите. В PHP вы можете сделать это с помощью exit:
<?php
exit(33);
Вы можете узнать точный код состояния для определенной части программного обеспечения в своей документации (учитывая, что автор фактически документировал его). Однако существует общее согласие в том, что 0 означает "ОК", и все остальное означает "возникла проблема", поэтому проверка на нуль обычно достаточно.
В вашем случае, похоже, вы пытаетесь выполнить несуществующую программу. PHP выполняет внешние программы через системную оболочку, поэтому значение, вероятно, будет получено из bash или любой другой оболочки по умолчанию. В Unix есть некоторые коды выхода со специальными значениями и 127 означает команда не найдена.
Ответ 4
exec() работает с внешним файлом и получает код возврата оттуда или из операционной системы. Если 127 поступает из операционной системы, это означает, что файл не найден в вашем определенном пути.
Если, с другой стороны, 127 поступает из приложения, которое вы используете, вам нужно будет проверить документацию для этого приложения, чтобы узнать, что это значит.