我有一些用PHP编写的代码,但我也开发了一个用Python编写的脚本。是否可以从PHP代码中调用这个Python脚本?
如果可以,我该如何从PHP向Python脚本传递参数?
我已经尝试过查找答案,但没有成功。
有人能给我一些提示吗?
我有一些用PHP编写的代码,但我也开发了一个用Python编写的脚本。是否可以从PHP代码中调用这个Python脚本?
如果可以,我该如何从PHP向Python脚本传递参数?
我已经尝试过查找答案,但没有成功。
有人能给我一些提示吗?
你使用了系统函数:http://php.net/manual/zh/function.system.php
类似这样的:
$mystring = system('python myscript.py myargs', $retval);
retval
和mystring
中应该包含什么?它们是相同的还是不同的?我假设retval
将包含控制台上显示的所有内容。您能帮忙理解一下吗? - Krishna Oza$retval
)是一个整数。按照惯例,0
表示没有错误,任何其他数值均表示应用程序特定的错误代码。 - Daren Thomas我成功地为PHP创建了一个简单的函数PY([parameters], code)。你几乎可以将Python代码包含到你的PHP代码中。你也可以传递一些简单的输入变量给Python进程。你无法获取任何数据返回,但是我相信这可能很容易解决 :) 不适合在Web主机上使用(潜在的不安全,系统调用),我为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";
?>
您可以尝试这个:
Python脚本:
test.py: print "hello"
然后是PHP脚本
index.php: $i =`python test.py`; echo $i;
是的,您可以简单地使用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环境中这是必须的。