如何从PHP调用Python脚本?

14 投票
4 回答
44977 浏览
提问于 2025-04-16 14:47

我有一些用PHP写的代码,但我也写了一个用Python写的脚本。请问我可以从PHP代码里调用这个Python脚本吗?

如果可以的话,我该怎么把参数从PHP传给Python脚本呢?

我试着找答案,但没有成功。

有人能给我一点提示吗?

4 个回答

1

你可以试试这个:

Python脚本:

 test.py:
        print "hello"

然后是PHP脚本:

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

我成功地为PHP写了一个简单的函数PY([parametress], code)。这样你几乎可以在PHP中使用Python代码。你还可以传递一些简单的输入变量给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";
?> 
26

你可以使用系统函数:http://php.net/manual/en/function.system.php

像这样使用:

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

撰写回答