我有一些用PHP编写的代码,但我也开发了用Python编写的脚本。是否可以从PHP代码中调用这个Python脚本?如何从PHP调用Python脚本?
如果是的话,我怎样才能从PHP传递参数给Python脚本?
我试图找到一个没有任何成功的答案。
有人可以给我一个线索吗?
我有一些用PHP编写的代码,但我也开发了用Python编写的脚本。是否可以从PHP代码中调用这个Python脚本?如何从PHP调用Python脚本?
如果是的话,我怎样才能从PHP传递参数给Python脚本?
我试图找到一个没有任何成功的答案。
有人可以给我一个线索吗?
您使用的系统功能:http://php.net/manual/en/function.system.php
事情是这样的:
$mystring = system('python myscript.py myargs', $retval);
'retval'和'mystring'应该存在什么。它们是相同的还是不同的,我假定'retval'将包含控制台上的所有内容。你能帮助理解吗? – 2015-06-17 19:10:23
混淆来自使用ret ** val **。这个文档也是错误的,因为他们命名这个return var,然后将它声明为retval。但在上面的例子中$ retval是执行状态,一个整数。而$ mystring是刚刚运行的脚本的输出的最后一行,即一个字符串。希望这能说明问题。 – Nalaurien 2017-06-06 00:17:07
可执行程序的返回码(此处为'$ retval')是一个整数。约定是,'0'没有错误,其他任何东西都是特定于应用程序的错误代码。 – 2017-06-07 07:23:57
我设法让简单的功能PY([parametress]代码),PHP。您几乎可以将Python代码包含到您的PHP中。 您也可以将一些简单的输入变量传递给python进程。你不能得到任何数据传回,但我相信可以很容易地固定:)使用在虚拟主机不正常(potentionally不安全,系统调用),我创建它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";
?>
是的,你可以只需使用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环境中使用。
你可以试试这个:
Python脚本:
test.py: print "hello"
然后PHP脚本
index.php: $i =`python test.py`; echo $i;
是肯定,它应该有可能。但请大家给多一些细节。你是通过命令行还是通过网页运行 – 2011-03-31 09:13:22
Duplicate - http://stackoverflow.com/questions/166944/calling-python-in-php? – 2011-03-31 09:15:47