Я пытаюсь прочитать вывод Python из PHP-приложения.
я использую $out = shell_exec("./mytest")
в коде php, чтобы запустить приложение, и sys.exit("returnvalue")
в приложении Python для возврата значения.
Проблема в том, что $out
не содержит моего возвращаемого значения.
Вместо этого, если я попробую с $out = shell_exec("ls")
, $out
переменная содержит вывод ls
команда.
Если я бегу ./mytest
из терминала он работает, и я вижу вывод на моем терминале.
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
исчезновение может быть довольно запутанным, если случится что-то неожиданное).
Других решений пока нет …