0

我无法理解为什么 php 中的返回值不起作用。有谁能够帮我?

<?php
exec("xyz.py",$output,$return);
foreach($output as $item){
echo "$item"; 
}
echo $return;
?>

xyz.py的脚本如下:

def func():
  print ('Hello')
  return 21
func()

无论 xyz.py 返回什么值,输出始终为 Hello0

提前致谢。

4

3 回答 3

2

根据 PHP文档,exec 的第三个参数($return在您的示例中)的工作方式如下:

如果 return_var 参数与输出参数一起存在,则执行命令的返回状态将写入此变量

由于您的 python 程序运行良好,因此返回状态应为 0(无错误)。

这可能是你想要的:

import sys
def func():
  print ('Hello')
  return 21
sys.exit(func())
于 2013-06-28T17:24:22.527 回答
0

返回参数表示 exec() 函数的状态,而不是程序返回的内容。

-1 = 错误

0 = 成功

于 2013-06-28T17:26:05.820 回答
0

将此附加到您的执行字符串中,这样您就可以捕获任何错误输出:

2>&1 &

所以根据你的例子:

exec('xyz.py 2>&1 &', $output);
echo $output;
于 2013-06-28T17:43:00.993 回答