PHP return_var коды?

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

http://php.net/exec

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

Мой код php:

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

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

Какие-либо предложения?

23
задан Jeffrey Berthiaume 9 February 2010 в 16:11
поделиться

4 ответа

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

23
ответ дан 29 November 2019 в 02:16
поделиться

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

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

10
ответ дан 29 November 2019 в 02:16
поделиться

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

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

1
ответ дан 29 November 2019 в 02:16
поделиться

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

<?php
exit(33);

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

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

3
ответ дан 29 November 2019 в 02:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: