1

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

自从我用 PHP 编程以来,我从来没有真正使用过 Python,但我一直在寻找一个简单的代码来将数据从 PHP 发送到 Python,然后.py将数据发送回 PHP。

exec在 PHP 中尝试过,有和没有 json enc/dec 都没有任何成功。

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

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

没有成功。

In pythontest.py: 打印发送回数据。

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

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

正如我所说,我以前没有使用过 Python,所以我想知道除了在脚本中编写代码以使其工作之外,是否还需要更多的东西?

我看过很多关于这个的帖子,并尝试过他们的代码“对他们有用”,但对我没有用^^

附加信息:通过 WAMP 的 PHP,同一地图中的 .py。它应该是基于网络的,如果这让它有所不同的话。

4

2 回答 2

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 代码或路径方面做错了什么?

于 2013-07-09T12:09:03.363 回答
0

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

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

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

尝试使用.exe,限定 python 可执行文件的名称c:\python27\python.exe pythontest.py(您可能已经尝试过,因为您说您尝试使用“完整路径”,但我将它扔在那里以确保您包含.exe)。

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

另外,请张贴 的内容(或至少第一行)pythontest.py

于 2013-07-08T19:50:20.057 回答