我试图从php webapp读取python输出。
我在php代码中使用$out = shell_exec("./mytest")
来启动应用程序,并在python应用程序中使用sys.exit("returnvalue")
来返回值。
问题是$out
不包含我的返回值。
相反,如果我尝试使用$out = shell_exec("ls")
,$out
变量包含ls
命令的输出。
如果我从终端运行./mytest
它可以工作,我可以在终端上看到输出。
答案 0 :(得分: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
消失可能会非常混乱。)