如何从PHP调用Python脚本?

14

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

如果可以,我该如何从PHP向Python脚本传递参数?

我已经尝试过查找答案,但没有成功。

有人能给我一些提示吗?


是的,肯定可以。但请提供更多细节。您是通过命令行还是Web运行两者? - J Bourne
3
重复 - https://dev59.com/anVC5IYBdhLWcg3w1E_w?这个问题是关于在PHP中调用Python的方法。如果您想在PHP中使用Python程序的功能,有几种方法可以做到这一点。其中一种方法是使用类似于“exec”或“shell_exec”的函数来调用Python解释器并传递参数。另一种方法是使用PHP扩展程序,如“python”或“swig”,以便更有效地与Python集成。无论哪种方法,都需要确保您的系统安装了正确的软件和库,并且可以让PHP脚本访问这些内容。 - Senthil Kumaran
4个回答

26

1
retvalmystring中应该包含什么?它们是相同的还是不同的?我假设retval将包含控制台上显示的所有内容。您能帮忙理解一下吗? - Krishna Oza
混淆来自于对 "retval" 的使用。文档也有问题,因为他们将此返回变量命名为 retval,然后又声明它为 retval。但在上面的例子中,$retval 是执行的状态,是一个整数。而 $mystring 是刚运行的脚本的最后一行输出,是一个字符串。希望这能澄清事情。 - Nalaurien
可执行程序的返回代码(此处为$retval)是一个整数。按照惯例,0表示没有错误,任何其他数值均表示应用程序特定的错误代码。 - Daren Thomas

3

我成功地为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";
?> 

1

您可以尝试这个:

Python脚本:

 test.py:
        print "hello"

然后是PHP脚本

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

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环境中这是必须的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接