从php执行python

时间:2011-08-12 13:55:14

标签: php python

假设您有这样的课程:

class MyClass:
    def __init__(self, var1):
        self.var = var1
    ....

此类在python中仅在分配值时起作用:

x = MyClass("Hi")

所以基本上,我的问题是我是否可以从php发送变量来执行python类,并返回其输出(它的字符串)并继续执行我的PHP代码?

有什么建议吗?

在php中:

$var = "something";
$result = exec("python fileName.py .$var")

在python中:

import sys

sys.argv[0] # this is the file name
sys.argv[1] # this is the variable passed from php

4 个答案:

答案 0 :(得分:7)

首先,创建一个包含要执行的python脚本的文件,包括(或加载)类和x = MyClass("Hi")

现在,使用以下行来获得结果:

$result = exec('python yourscript.py');

答案 1 :(得分:0)

尝试使用Python PECL包:

此扩展允许将Python解释器嵌入到PHP中,允许从PHP中实例化和操作Python对象。

http://pecl.php.net/package/python

答案 2 :(得分:0)

我设法为PHP创建了简单的函数PY(),它允许您虚拟地将python代码包含到PHP脚本中。您可以将一些输入变量传递给python进程。你无法获得任何数据,但我相信这很容易修复:) 不适合在虚拟主机上使用(可能不安全,系统()调用),我为PHP-CLI创建它但仍然可以正常工作..

<?php

function PY()
{
 $p=func_get_args();
 $code=array_pop($p);
 if (count($p) % 2==1) return false;
 $precode='';
 for ($i=0;$i<count($p);$i+=2) $precode.=$p[$i]." = json.loads('".json_encode($p[$i+1])."')\n";
 $pyt=tempnam('/tmp','pyt');
 file_put_contents($pyt,"import json\n".$precode.$code);
 system("python {$pyt}");
 unlink($pyt);
}

//begin
echo "This is PHP code\n";
$r=array('hovinko','ruka',6);
$s=6;

PY('r',$r,'s',$s,<<<ENDPYTHON
 print('This is python 3.4 code. Looks like included in PHP :)');
 s=s+42
 print(r,' : ',s)
ENDPYTHON
); 
echo "This is PHP code again\n";
?>

答案 3 :(得分:0)

你可以在python文件中打印你想要的细节/变量,这些文件将被缓冲到php文件中的$ result变量,并使用php文件中的echo $ result从python文件中打印出结果。 / p>

这是python修改过的代码:

#!/usr/bin/python
import sys
print sys.argv[1] + sys.argv[0] # this is the variable passed from php