2014-12-05 4 views
1

Я пытаюсь прочитать вывод python из php webapp.Чтение вывода из команды Python в PHP webapp

Я использую $out = shell_exec("./mytest") в php-коде для запуска приложения и sys.exit("returnvalue") в приложении python для возврата значения.

Проблема в том, что $out не содержит моего возвращаемого значения. Вместо этого, если я попытаюсь с $out = shell_exec("ls"), $out переменная содержит вывод команды ls.

Если я запустил ./mytest с терминала, он работает, и я могу видеть вывод на моем терминале.

ответ

1
sys.exit("returnvalue") 

Использование строки с кодом sys.exit предназначено для обозначения ошибки. Таким образом, это покажет returnvalue в stderr, а не stdout. shell_exec() только фиксирует stdout по умолчанию.

Вы, вероятно, хотите, чтобы использовать это в коде Python:

print("returnvalue") 
sys.exit(0) 

В качестве альтернативы, вы можете также использовать это в PHP код для перенаправления stderr на stdout.

$out = shell_exec("./mytest 2>&1"); 

(На самом деле, делать как, вероятно, лучше, так как имея stderr исчезнуть может быть довольно запутанным, если что-то неожиданное происходит).

+0

print ("returnvalue") sys.exit (0) не работает ... $ out = shell_exec ("./ mytest 2> & 1") работает, но возвращается только последняя строка, и, к сожалению , panda3d добавить 2 строки сообщений после моего возвращаемого значения ... – stafanovinci

+0

@stafanovinci Я не знаю вашего кода на Python или вашего PHP-кода. Я не могу указать никаких ошибок в коде, о котором я не знаю ;-). Это ошибка в коде, который вы отправили * ... – Carpetsmoker

Смежные вопросы