2013-05-01 2 views
3

Я пытаюсь подключить файл HTML с питономCGI программирование с Python, используя WAMP и HTML

Вот мой HTML код

<html> 
<head> 
</head> 
<body> 
<form method="POST" action="C:\wamp\www\cgi-bin\nidhi.py"> 
    <p>Your first name: <input type="text" name="firstname"> 
    <p>Your last name: <input type="text" name="lastname"> 
    <p>Click here to submit form: <input type="submit" value="Yeah!"> 
    <input type="hidden" name="session" value="1f9a2"> 
</form> 
</body> 
</html> 

Вот содержание C: \ WAMP \ WWW \ cgi- bin \ nidhi.py

#!/usr/local/bin/python 
import cgi 

def main(): 
    print "Content-type: text/html\n" 
    form = cgi.FieldStorage() # parse query 
    if form.has_key("firstname") and form["firstname"].value != "": 
     print "<h1>Hello", form["firstname"].value, "</h1>" 
    else: 
     print "<h1>Error! Please enter first name.</h1>" 

if __name__ == '__main__': 
    main() 

Так что да, я использую это с помощью WAMP в качестве моего сервера.

Поэтому, когда я открываю свой файл HTML, я могу видеть форму, но когда я нажимаю кнопку, все, что она делает, показывает мне код на питоне.

Что я делаю неправильно?

Вот файл httpd.conf в C: \ WAMP \ Bin \ Apache \ apache2.2.22 \ конф

ServerRoot "c:/wamp/bin/apache/apache2.2.22" 
Listen 80 
LoadModule actions_module modules/mod_actions.so 
LoadModule alias_module modules/mod_alias.so 
LoadModule asis_module modules/mod_asis.so 
LoadModule auth_basic_module modules/mod_auth_basic.so 
LoadModule authn_default_module modules/mod_authn_default.so 
LoadModule authn_file_module modules/mod_authn_file.so 
LoadModule authz_default_module modules/mod_authz_default.so 
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so 
LoadModule authz_host_module modules/mod_authz_host.so 
LoadModule authz_user_module modules/mod_authz_user.so 
LoadModule autoindex_module modules/mod_autoindex.so 
LoadModule cgi_module modules/mod_cgi.so 
LoadModule dir_module modules/mod_dir.so 
LoadModule env_module modules/mod_env.so 
LoadModule include_module modules/mod_include.so 
LoadModule isapi_module modules/mod_isapi.so 
LoadModule log_config_module modules/mod_log_config.so 
LoadModule mime_module modules/mod_mime.so 
LoadModule negotiation_module modules/mod_negotiation.so 
LoadModule setenvif_module modules/mod_setenvif.so 
LoadModule php5_module "c:/wamp/bin/php/php5.3.13/php5apache2_2.dll" 

<IfModule !mpm_netware_module> 
<IfModule !mpm_winnt_module> 
User daemon 
Group daemon 

</IfModule> 
</IfModule> 
ServerAdmin [email protected] 

ServerName localhost:80 

DocumentRoot "c:/wamp/www/" 

<Directory /> 
    Options FollowSymLinks ExecCGI 
    AllowOverride None 
    Order deny,allow 
    Deny from all 
</Directory> 
<Directory "c:/wamp/www/"> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    Order Deny,Allow 
    Deny from all 
    Allow from 127.0.0.1 
</Directory> 
<IfModule dir_module> 
    DirectoryIndex index.php index.php3 index.html index.htm 
</IfModule> 
<FilesMatch "^\.ht"> 
    Order allow,deny 
    Deny from all 
    Satisfy All 
</FilesMatch> 
ErrorLog "c:/wamp/logs/apache_error.log" 
LogLevel warn 

<IfModule log_config_module> 
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
    LogFormat "%h %l %u %t \"%r\" %>s %b" common 

    <IfModule logio_module> 
     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 
    </IfModule> 
    CustomLog "c:/wamp/logs/access.log" common 
</IfModule> 

<IfModule alias_module> 
</IfModule> 

<IfModule cgid_module> 

</IfModule> 

<Directory "C:/wamp/www/cgi-bin"> 
    AllowOverride None 
    Options ExecCGI 
    Order allow,deny 
    Allow from all 
</Directory> 
DefaultType text/plain 

<IfModule mime_module> 

    TypesConfig conf/mime.types 
    AddType application/x-compress .Z 
    AddType application/x-gzip .gz .tgz 
    AddType application/x-httpd-php .php 
    AddType application/x-httpd-php .php3 

    AddHandler cgi-script .cgi .pl .py 
</IfModule> 
Include conf/extra/httpd-autoindex.conf 


<IfModule ssl_module> 
SSLRandomSeed startup builtin 
SSLRandomSeed connect builtin 
</IfModule> 

Include "c:/wamp/alias/*" 

Может кто-то пожалуйста, скажите мне, что я делаю неправильно? Я теряю рассудок!

ответ

0

Попробуйте изменить эту строку:

<form method="POST" action="C:\wamp\www\cgi-bin\nidhi.py"> 

Для этого:

<form method="POST" action="/cgi-bin/nidhi.py"> 

Вы хотите действие быть URL, который будет обрабатываться через ваш сервер, а не абсолютный путь к локальный файл, который ваш браузер знает, как получить без вашего сервера.

+0

это говорит веб-страница не найдена – Anon

+0

Вы получаете на страницу HTML через URL-адрес, подобный этому: http: //localhost/mypage.html?Если да, посмотрите, можете ли вы перейти к скрипту с таким URL-адресом: http: //localhost/cgi-bin/nidhi.py. Вы получите ошибки из-за отсутствия значений формы, но просто проверьте, можете ли вы напрямую получить доступ к CGI-скрипту. –

+0

nope я не могу получить к нему доступ напрямую. так что я предполагаю, что я не настроил Apache правильно? – Anon

1

Также верхняя строка сценариев python должна указывать на ваш интерпретатор следующим образом.

#!C:\Python27\python.exe -u 

Я не уверен, что такое -u, хотя я получил информацию с этой страницы.

http://wiki.python.org/moin/CgiScripts

#!C:\Python27\python.exe -u 

import cgi 

print 'Content-Type: text/plain\n\n' #this line is compulsory to separate body from header in http response 
+0

Я на окнах, так что было бы эквивалентно -u здесь? – Anon

+1

-u для небуферизованных двоичных файлов выход для стандартных и ошибок ц. Однако вам это не нужно в ваших сценариях, если вы не хотите напрямую запускать его в оболочке. –

+0

-u - это просто переключатель для небуферизованного вывода. Вы можете перейти в каталог установки python в командной строке и набрать python.exe /? чтобы увидеть все переключатели. – citizen2191629

0

я просто понял, что ваша строка заголовка Content-тип: текст/html \ п должен быть изменен на Content-Type: текст/html \ г \ п Каким образом Windows делает новую линию.

1

Основная проблема, которую я вижу, заключается в том, что вы не настроили скрипты Python для обработки вашим IIS-сервером.

Поскольку модуль Python не активирован, Apache НЕ понимает ваш код Python и просто выводит полный код, как есть.

Пожалуйста, используйте MOD_WSGI (не MOD_PYTHON) на вашем сервере WAMP. Вы можете узнать больше здесь: https://code.google.com/p/modwsgi/

И это должно помочь вам быстро установить его: https://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

Смотрите так: Installing mod_wsgi on WAMP server running on Windows 7

+0

спасибо! попробуем это сейчас и вернемся к вам как можно скорее :) – Anon

+0

, глядя на это http://stackoverflow.com/questions/11602653/installing-mod-wsgi-on-wamp-server-running-on-windows-7, где следует мы связываем это с? Я имею в виду, что мы делаем вместо шага 4? – Anon

+0

Также корень нашей проблемы заключается в том, что я не могу получить доступ к каталогу cgi-bin через WAMP. Ошибка: Forbidden У вас нет разрешения на доступ к/cgi-bin/на этом сервере. – Anon

Смежные вопросы