在Web服务器上运行Python脚本

时间:2015-06-23 06:54:57

标签: python web-services cgi server

我有一个Web服务器,我的cgi-bin在0755上,我的脚本名为return.py也是0755.当我的脚本只是这个时

#!/usr/bin/perl

import cgi
import json


print "Content-type: text/plain\n\n";
print "testing...\n";

然后我转到我看到测试的网页......我应该这样做,但是当我将任何内容添加到我的脚本中时

form = cgi.FieldStorage()

param = form.getvalue("param")

if param:
    json.dumps({'success': True, 'message':  param })
else:
    json.dumps({'success': False, 'message':  'did not receive parameter' })

我收到500内部服务器错误,我不知道为什么,我有正确的权限设置,并且python正在运行,因为它在我不添加上述内容时有效吗?我上面的代码有问题吗?还有什么可能导致这个问题?

通过这种方式,上面的代码是因为我正在对此进行POST以及返回发布值的内容。只是一个简单的测试用例,但我无法使用它?

我已经查看了这个检查清单,我可以查看的内容,这一切都有效https://encodable.com/internal_server_error/

提前感谢您的帮助。 :)

修改

这里是错误日志

[Tue Jun 23 01:35:38.661161 2015] [authz_core:error] [pid 874653] [client 173.34------:51484] AH01630: client denied by server configuration: /home/spencer/public_html/.htaccess
[Tue Jun 23 01:35:38.426745 2015] [access_compat:error] [pid 874653] [client 173.34-----:51484] AH01797: client denied by server configuration: /home/spencer/public_html/error_log

1 个答案:

答案 0 :(得分:1)

只需更改shebang即可正常工作

#!/usr/bin/perl
import cgi
import json
print "Content-type: text/plain\n\n";
print "testing...\n";

并假设您将其保存为test.py工作 然后你添加下面的部分

#!/usr/bin/perl
import cgi
import json
print "Content-type: text/plain\n\n";
print "testing...\n";
form = cgi.FieldStorage()
param = form.getvalue("param")
if param:
    json.dumps({'success': True, 'message':  param })
else:
    json.dumps({'success': False, 'message':  'did not receive parameter' })

它会出现服务器错误

然后将shebang改为

#!/usr/bin/python

它有效.....正确的shebang和生活很容易