将数据从php发送到python并返回

时间:2013-07-08 17:36:13

标签: php python

我一直在寻找如何通过PHP成功exec Python脚本,只是为了测试一切。

我从未真正使用过Python,因为我在PHP中编程但是寻找一个简单的代码将数据从PHP发送到Python,然后在.py中将数据发送回PHP。

我在PHP中尝试exec,有没有json enc / dec但没有成功。

这些是我在PHP中尝试过的命令:

* $result = shell_exec('pythontest.py' . escapeshellarg(json_encode($data)));
* exec("python pythontest.py", $resultData);
  var_dump($resultData);

没有成功。

pythontest.py中:用于发送数据的打印件。

尝试使用Python和pythontest.py(PHP)的完整路径。

使用json的enc / dec在PHP文件中工作,所以在PHP代码中似乎没有任何错误,我仍然无法运行脚本!

正如我所说,我以前没有使用过Python,所以我想知道是否还需要在脚本中编写代码才能使其工作?

我已经看过很多关于此的帖子,并尝试了他们的代码“会对他们有用”,但不适合我^^

其他信息:PHP通过WAMP,.py在同一个地图中。它应该是基于网络的,如果这有所不同。

2 个答案:

答案 0 :(得分:0)

检查以确保包含python.exe的目录位于PHP脚本的PATH中(通过getenv('PATH'))。

尝试通过Windows命令提示符直接运行python c:\path\to\pythontest.py。那样有用吗?如果没有,请从那里调试PATH和问题,然后在PHP中重试。

如果您的WAMP堆栈运行具有有限权限的PHP,请检查以确保该用户对python.exe文件以及包含它的整个目录具有“读取和执行”类型权限,递归地。这可能有些过分,但在整个python发行目录上递归设置该用户的perms会排除与权限相关的问题。

尝试使用.exe限定python可执行文件的名称,例如c:\python27\python.exe pythontest.py(无论如何,你可能已经试过了,因为你说你试过“完整路径”,但是我把它扔到那里以确保你包括.exe)。

尝试使用非常简单的内容替换pythontest.py的内容(例如print 'hello')并检查行为是否发生变化。

另外,请发布pythontest.py的内容(或至少第一行)。

答案 1 :(得分:0)

我现在尝试更改路径,因为python.exe不在同一目录中。 我最终的结果是

$output = getenv('PATH'); echo "Real Path: " . $output . "<br>"; $ret = apache_getenv("PATH"); echo "Apache Path: " . $ret . "<br>"; apache_setenv("PATH", "C:/Python33"); $ret = apache_getenv("PATH"); echo "Apache new path: " . $ret . "<br>"; $output = getenv('PATH'); echo "Real path, hopefully changed: " . $output . "<br>";

这只是为了看看我是否可以改变路径,因为我之前从未这样做过。 我现在只有

import sys, json  print ("hello")

在我的python文件中并试图通过cmd运行它,它工作。 但是当我尝试用php运行它时,它再次失败。 我也查看了权限: 管理员,用户有权阅读和执行,我甚至添加了“所有人”对文件夹和子文件夹/文件的完全权限,只是为了看看是否有任何区别。 我错过了什么,或者我是否对权限,python代码或路径做错了什么?