让Python接受POST/Get请求
我有一个PHP页面和一个Python程序。Python程序进行一个内部API调用,以获取需要在PHP页面上显示的信息 Python程序被设置为接受一个参数,并使用该参数处理API调用。例如,让Python接受POST/Get请求,python,php,Python,Php,我有一个PHP页面和一个Python程序。Python程序进行一个内部API调用,以获取需要在PHP页面上显示的信息 Python程序被设置为接受一个参数,并使用该参数处理API调用。例如,myPythonProgram 12345-获取有关帐户12345的信息 我想通过Ajax从我的PHP页面调用它,但是如果我按照应该调用的方式调用程序,我会得到404(程序和参数之间有一个空格)。我已经修改了Python脚本以接受请求(我想),但是当我这样做时,Python代码是呈现的,而不是结果。以下操作失
myPythonProgram 12345
-获取有关帐户12345的信息
我想通过Ajax从我的PHP页面调用它,但是如果我按照应该调用的方式调用程序,我会得到404(程序和参数之间有一个空格)。我已经修改了Python脚本以接受请求(我想),但是当我这样做时,Python代码是呈现的,而不是结果。以下操作失败:
$.ajax({
type: 'POST',
url: "myPythonProgram",
data: { id: '12345' },
success: function(response) {
// Stuff
},
fail: function() {
alert('Error');
},
complete: function() {
// Stuff
}
});
我想也许我可以通过shell\u exec()
调用另一个PHP页面来执行Python程序,但该页面似乎是在Python程序完成其请求之前呈现的。比如:
$.ajax({
type: 'POST',
url: "callPy.php",
data: { id: '12345' },
success: function(response) {
// Stuff
},
....
});
callPy.php是:
<?php
$data = $_REQUEST['data'];
if (isset($data) && $data['id'] != NULL) {
$info = shell_exec("myPythonProgram " . $data['id']);
print_r(json_encode($info));
}
?>
如果我在一个shell中运行这个确切的命令myPythonProgram 12345
,它就会工作。如果我修改callPy.php以硬编码id,然后在shell中调用php callPy.php
,它就可以工作了。但在浏览器中调用此函数将导致null
如何使python接受POST或GET请求,或使PHP在呈现页面之前等待python程序完成?这通过更改API调用所需文件的权限得到解决 首先,我检查了web浏览器使用的用户:
ps aux | egrep'(apache | httpd)
,这表明它是“apache”。接下来,我尝试以该用户的身份运行python程序:sudo-u apache./mypython程序12345
。这导致API调用所需的证书出现错误
使用
shell\u exec()
,PHP将等待进程完成。因此,更改该证书上的权限使我能够以apache用户的身份运行该程序,并且我能够达到预期的效果。通过更改API调用所需文件的权限,解决了这一问题
首先,我检查了web浏览器使用的用户:ps aux | egrep'(apache | httpd)
,这表明它是“apache”。接下来,我尝试以该用户的身份运行python程序:sudo-u apache./mypython程序12345
。这导致API调用所需的证书出现错误
使用shell\u exec()
,PHP将等待进程完成。因此,更改该证书上的权限允许我以apache用户的身份运行该程序,并且我能够达到预期的效果