如何从PHP调用Python脚本?

时间:2011-03-31 09:11:04

标签: php python

我有一些用PHP编写的代码,但我也开发了一个用Python编写的脚本。是否可以从PHP代码中调用此Python脚本?

如果是,我如何从PHP传递参数到Python脚本?

我试图找到答案但没有任何成功。

有人能给我一些线索吗?

4 个答案:

答案 0 :(得分:24)

您使用系统功能:http://php.net/manual/en/function.system.php

这样的事情:

$mystring = system('python myscript.py myargs', $retval);

答案 1 :(得分:3)

我设法为PHP制作了简单的函数PY([参数],代码)。您几乎可以在PHP中包含python代码。 您可以将一些简单的输入变量传递给python进程。你无法获得任何数据,但我相信可以很容易地修复:)不适合在webhosting使用(可能不安全,系统调用),我为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";
?> 

答案 2 :(得分:1)

你可以试试这个:

python脚本:

 test.py:
        print "hello"

然后是php脚本

index.php:
   $i =`python test.py`;
   echo $i;

答案 3 :(得分:0)

是的,您只需使用exec()在php中调用python程序即可。我已经包含在这里的简单示例程序。

$pyscript = 'G:\wamp\www\ll\test.py';
$python = 'C:\\Python27\\python.exe';

$cmd='$pyscript $python';

exec("$cmd", $output);

您应该指定您的python.exe路径和您的python文件路径。它必须在Windows环境中使用。