我一直在寻找如何通过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在同一个地图中。它应该是基于网络的,如果这有所不同。
答案 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代码或路径做错了什么?