【发布时间】:2017-07-17 22:10:37
【问题描述】:
我有一些用 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 将包含控制台上的所有内容。您能否帮助理解这一点。
$retval)是一个整数。约定是,0 表示没有错误,其他任何内容都是特定于应用程序的错误代码。
我设法为 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";
?>
【讨论】:
你可以试试这个:
python 脚本:
test.py:
打印“你好”
然后是 php 脚本
index.php: $i =`python test.py`; 回声 $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环境中需要。
【讨论】: