PHP< - > Python变量交换

时间:2014-11-21 13:14:44

标签: php python variables

这是我的第一篇帖子,请宽大处理:)

在参考主题时,在写作之前我已经对堆栈溢出进行了彻底的研究,我能找到的最接近的答案是Passing value from PHP script to Python script

在我的测试中我遇到这种情况: prova.php文件:

<?php
$item1 = 3;
$item2 = 4;
$tmp = exec("python ../cgi-bin/test.py $item1 $item2"); 
echo $tmp; // invia la richiesta a Python
?>

然后在Python test.py文件中写道:

#!/usr/local/bin/python     
import sys              
print sys.argv[1] , sys.argv[2] 

所有这一切都正常,页面prova.php显示变量的值,即3和4

我无法理解的是如何在test.py中继续product sys.argv[1] * sys.argv[2]并将其返回给PHP。 我做的所有尝试都将“prova.php”显示为空白页面。 提前感谢您的关注。

=============================================== ===================== 哇,亲爱的格奥尔格,马特,安德鲁和杰瑞克,非常感谢您的宝贵意见!几分钟后你就解决了我几小时内分析的问题(因为你可能已经猜到我是初学者)。

现在一切都很完美!

如果可能的话,我想知道一件事:有没有办法当python运行“print ...”行(在$ output中返回结果)时,该值不显示在页面prova上.php,但只存储在$ output中?

再次感谢!

3 个答案:

答案 0 :(得分:0)

你必须通过引用exec传递一个将接收输出的变量:

<?php $item1 = 3;
$item2 = 4; 
exec("python ../cgi-bin/test.py $item1 $item2", $output);  
echo $output; // invia la richiesta a Python ?>

答案 1 :(得分:0)

将第二个参数传递给exec命令以捕获子进程(python)的输出。 http://php.net/manual/en/function.exec.php

$output = array() exec("python...",$output) echo $output[0]

答案 2 :(得分:0)

在微服务领域,最好提供REST接口并从CuRL调用中获取数据。当然,这是一个架构调用,但你最有可能更适合采用这种方法。如果不可能采用这种方法,请使用exec命令,正如其他人所指出的那样。但是,如果你的python是在virtualenv中被隔离的,你将需要提供完整的python路径和完整的python脚本位置。

<?php 
    $item1 = 3;
    $item2 = 4; 
    exec("/path/to/python-venv/bin/python /path/to/python-venv/src/cgi-bin/test.py $item1     $item2", $result);  
    echo $result;
?>

#!/usr/bin/env python     
import sys
print int(sys.argv[1]) * int(sys.argv[2])