2017-08-15 80 views
0

这是我的代码,它应该根据对其他类似问题的答案工作,但它不会。从Python中读取php var

PHP:

<?PHP 

$par = $_POST["parameter"]; 
$importPar=exec("py pyData.py . $par"); //also tried shell_exec() 
print ($par); 
print($importPar); 
?> 

的Python:

import sys 
who = sys.argv[1] 
print("This is php var: ",who) 

它可能必须做一些与我的CMD,因为什么都不会返回甚至当我尝试:

$test=shell_exec('ipconfig'); 
echo $test; 
+1

边注:Python可以直接从通过使用CGI/WSGI web请求被调用。这里可能不需要使用PHP来调用python脚本。 –

回答

0

稍作修改,你的代码在我的PHP 5.6.3安装程序中工作得很好。我在下面的示例中唯一的实质性区别是$par在本地设置,而不是从$POST输入设置。

轻微修正:当你包括$variable双引号内
1. .是没有必要的。这实际上会使python认为您想要打印.而不是$par,因为.被读为sys.argv[1]
2.我假设py是别名,但我需要使用pythonexec()才能正常运行。
3.你会得到一个元组作为打印输出与你的Python声明原样:('This is php var: ', 'foo') 。请考虑使用.format(),请参阅下文。

""" test.py 
import sys 
who = sys.argv[1] 
print('This is php var: {}'.format(who)) 
""" 

<?PHP 
$par = "foo"; 
$importPar=exec("python test.py $par"); 
print ("$par\n"); 
print($importPar); 
?> 

输出:

foo 
This is php var: test.py 
Process finished with exit code 0