从Python

时间:2017-08-15 15:36:14

标签: php python

这是我的代码,应该根据其他类似问题的答案工作,但事实并非如此。

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 个答案:

答案 0 :(得分:0)

通过微小的修改,您的代码在我的PHP 5.6.3设置上运行得很好。下面我的示例中唯一的实质性区别是$par在本地设置,而不是从$POST输入。

轻微更正:
1.当您在双引号中包含.时,$variable不是必需的。这实际上会让python认为你要打印.而不是$par,因为.被读作sys.argv[1]
2.我假设py是别名,但我需要在python中使用exec()才能正常运行。
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