我是 HTML 和 Apache 新手。
我当前项目的一部分是制作一个用户界面来从用户那里获取数据,并将其发送到 python 程序进行处理。
我已经开始学习如何做到这一点。我做了一个简单的程序,在屏幕上打印“Hello firstname lastname”。我制作了另一个程序,它使用 HTML 表单操作来获取数据以提交它。
这两个程序的代码是:让我们调用这个文件 second.py
#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
first_name = form.getvalue('first_name')
last_name = form.getvalue('last_name')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"
要获取数据,请说 form.html :
<form action="/cgi-bin/second.py" method="get">
First Name: <input type="text" name="first_name"> <br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
我正在使用软呢帽。我在计算机上没有超级用户权限。我有另一个运行 apache 服务器的系统(ubuntu),在那里我拥有超级用户权限。
我的问题是,当我在 apache 服务器上运行它时, second.py 可以正常运行 http:// * .*8.1.91/cgi-bin/second.py。给出输出:Hello NoneNone
http://*.*8.1.91/cgi-bin/second.py?first_name=Akhil&last_name=Kulkarni 给出输出:Hello Akhil Kulkarni
这就是它的工作方式。
如果我运行 form.html (http://*.*8.1.91/cgi-bin/second_1.html) ,我会收到 500 Internal Server Error
我在错误日志中收到此错误:
[Wed Jun 12 15:40:07 2013] [error] [client *.*8.5.28] (8)Exec format error: exec of '/usr/lib/cgi-bin/second_1.html' failed
[Wed Jun 12 15:40:07 2013] [error] [client *.*8.5.28] Premature end of script headers: second_1.html
我尝试将它作为 python 程序运行,我得到相同的 500 内部服务器错误错误日志显示:
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] File "
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] /usr/lib/cgi-bin/second_1.py
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] ", line
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] 3
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28]
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28]
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] <form action="/cgi-vin/second.py"method="get">
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28]
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] ^
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] SyntaxError
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] :
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] invalid syntax
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28]
[Wed Jun 12 15:44:48 2013] [error] [client *.*8.5.28] Premature end of script headers: second_1.py
我尝试在每一行前面添加打印命令,就像第一个程序一样。那也没用。
接下来我直接在我的系统上运行这两个,而不是在不同 IP 上的 apache 服务器。这次 form.html 运行完美,我得到了输入数据和提交选项的框,但是现在 second.py 没有在 mozilla 上打开,每次我尝试打开它时,它都会将程序作为可下载文件打开。
所以,表单在我的桌面上工作,而不是 apache 服务器。Disply 脚本不能在我的桌面上运行,但可以在 apache 服务器上运行。如果我使用我的桌面将数据提供给 apache 服务器的显示脚本,它就可以工作。如何使表单在服务器上工作,以及在我的桌面上显示脚本?
我花了半天时间绑起来找出问题所在,但徒劳无功。任何帮助将不胜感激。