2013-06-28 150 views
0

我无法理解为什么PHP中的返回值无效。有谁能够帮助我?PHP执行功能

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

xyz.py的脚本如下:

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

输出始终Hello0不管事先什么价值xyz.py返回

感谢。

+0

尝试'sys.exit(21)'在你的python脚本中。 – georg

回答

2

按照PHP docs,EXEC的(在你的例子$return)的第三个参数,是这样的:

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

由于您的python程序运行正常,返回状态应为0(无错误)。

这可能是你想要什么:

import sys 
def func(): 
    print ('Hello') 
    return 21 
sys.exit(func()) 
+0

所以如果我想返回python脚本返回的值,我可以使用exec函数吗?或者还有其他功能吗? – sgp

+0

以上是你想要的吗? – jh314

+0

现在没有输出是HelloHello,我想输出Hello21 – sgp

0

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

-1 =错误

0 =成功

+0

有没有可以输出返回值的函数? – sgp

+0

不,您可以在最后打印返回值,并使用passthru()获取最后一行。 您可以在引号内附加返回值并打印出来。所以搜索和获取它会更容易。 –

0

附加给你的执行字符串,它可以让你捕捉任何错误输出:

2>&1 & 

所以按你的例子​​:

exec('xyz.py 2>&1 &', $output); 
echo $output;