2013-06-12 3 views
0

Я новичок в HTML и Apache.HTML-форма, дающая ошибку на apache

Часть моего текущего проекта состоит в том, чтобы сделать пользовательский интерфейс для передачи данных от пользователя и отправить его в программу python для обработки.

Я начал изучать, как это сделать. Я сделал простую программу, которая выводит на экран «Имя первого имени». Я сделал еще одну программу, которая использует действие формы HTML, чтобы получить данные, чтобы представить это.

Коды 2 программ: позволяет называть этот файл 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> 

Я использую Fedora. У меня нет привилегий суперпользователя на компьютере. У меня есть другая система (ubuntu) с запущенным сервером apache, где у меня есть привилегии суперпользователя.


Моя проблема, когда я запускаю это на сервере 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 = Кулкарня дает выход: Hello Akhil Кулкарне

это как это работает.

Если я запустить form.html (HTTP: //*.*8.1.91/cgi-bin/second_1.html), я получаю ошибку в 500 Internal Server

я получаю эту ошибку в моем ERRORLOG:

[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 

Я попытался запустить его как программу питона, я получаю те же 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 

Я попытался добавить команду печати перед каждой линии, как и пихты t. Это тоже не сработало.


Далее я запускаю эти 2 непосредственно в своей системе, а не на сервере apache, который находится на другом IP-адресе. На этот раз form.html отлично работает, я получаю поля для ввода данных и отправки параметров, но теперь second.py не открывается на mozilla, каждый раз, когда я пытаюсь открыть его, он открывает программу в виде загружаемого файла.

Итак, форма работает на моем рабочем столе, а не на сервере apache. Сценарий Disply не работает на моем рабочем столе, но работает на сервере apache. Если я сделаю с моего рабочего стола подачу данных в экранный скрипт сервера apache, он работает. Как заставить форму работать на сервере и сценарий отображения на моем рабочем столе?

Я провел полдня, чтобы узнать, в чем проблема, но напрасно. Любая помощь будет принята с благодарностью.

ответ

0

Моя проблема, когда я запускаю это на сервере apache, второй.py запускает правильно http: //*.*8.1.91/cgi-bin/second.py. дает результат: Hello NoneNone

Это, вероятно, потому, что вы задаете метод формы, но это должно быть сообщение.

... но теперь second.py не открывается на Mozilla, каждый раз, когда я пытаюсь открыть , он откроет программу в виде загружаемого файла.

Браузер не знает, что делать с .py, поэтому предлагает вам загрузить его. .py нужно обслуживать и запускать на веб-сервере, потому что он знает, как запускать и кормить его информацией.

+0

Здравствуйте, pypat, спасибо, что ответили. Second.py работает правильно на сервере apache, у меня нет проблем с ним. Поскольку я не вводил его в первый раз, он запустил NoneNone, что я и предполагал. Форма вообще не будет открываться на сервере apache (что является первой проблемой), просто дает ошибку. Можете ли вы помочь мне исправить это? Что касается второй проблемы (second.py получение загруженного вместо работы на моем рабочем столе), есть ли способ сообщить firefox, что я хочу запустить его, а не скачать его? –

+0

Хорошо, тогда я пропустил вопрос. Если вы не запустили это на своем рабочем столе, вам также понадобится какой-то веб-сервер. Браузер не создан для запуска .py. Я не работал с cgi, но я предполагаю, что вам нужно вернуть html и не распечатать его. – pypat