Как выполнить Python CGI-скрипт под Linux

1

У меня есть python cgi script, который отлично работает на компьютере Windows, просто запустив CGIHTTPServer в консоли, открыв страницу html, чтобы передать данные в script и отправив данные.
Теперь мне нужно сделать это под Linux, но это оказывается более сложным. Некоторые веб-поиски дали этому script, чтобы запустить сервер (я поставил 8000, поскольку оригинал 80 не работал)

 import os  
 import BaseHTTPServer, CGIHTTPServer  
 serverAddr = ("", 8000)  
 os.chdir("/home/apannife/www")  
 serv = BaseHTTPServer.HTTPServer( \  
     serverAddr, CGIHTTPServer.CGIHTTPRequestHandler)  
 serv.serve_forever()  

html.

<HTML><HEAD><TITLE>

Test

</TITLE>

</HEAD>

<BODY>

<B>  Filename </B>

<FORM METHOD=post ACTION="cgi-bin/docking_cgi.py" ENCTYPE="multipart/form-data">

<INPUT Type="file" NAME="upfile" SIZE=45><BR>

<P><INPUT TYPE=submit></FORM>



</BODY></HTML>

и первой части cgi.

#!/usr/bin/env python

import cgi

from cgi import FieldStorage


reshtml = '''Content-Type: text/html\n

<HTML><HEAD><TITLE>

DEMO

</TITLE></HEAD>

<BODY><H3> OUTPUT SENT TO %s %s </H3>

</BODY></HTML>'''
form = cgi.FieldStorage()

upfile = form['upfile']

Однако отправка данных просто возвращает текст cgi script и не запускает его. У меня есть chmod-ded 775 все в поле зрения, и похоже, что сервер не понимает автоматически, что я хочу, чтобы он выполнял script. Как мне это сделать? спасибо.

  • 0
    попробуйте chmod 755 на cgi-bin и все остальное; на моем сервере групповая запись-perm в каталоге запрещает выполнение.
  • 0
    что он установлен в drwxr-xr-x, поэтому должен быть в состоянии работать
Теги:
cgi

1 ответ

0

Сервер выполняет только сценарии под каталогами /cgi-bin и /htbin относительно корня сервера. В отличие от Windows эти имена чувствительны к регистру в Linux.

  • 0
    У меня есть html-файл в / home / apannife / www, так как именно там os.chdir устанавливает значение по умолчанию перед запуском сервера. Я создал каталог cgi-bin, в котором есть скрипт python. Это первая попытка на сервере Linux, чтобы я мог сделать что-то действительно наивное. Я просто открываю html-файл в Firefox и ожидаю, что он будет работать в данный момент.
  • 0
    Таким образом, «www» является символической ссылкой на «public_html»; и путь к коду Python - это / home / apannife / public_html / cgi-bin / the-python-code, верно? И в файле python установлен исполняемый бит, например 0755. Если это так, то разрешения кажутся хорошими.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню