Найти - Пользователи
Полная версия: CGI script is not executable
Начало » Центр помощи » CGI script is not executable
1 2
palzuncoff
Здравствуйте уважаемые форумчане, изучая учебник “Програмирование на Питон” 4- издание М.Луц, сталкнулся с такой проблемой:
при запуске cgi101.html

<html>
<title>Interactive Page</title>
<body>
<form method=POST action="cgi-bin/cgi101.py">
    <P><B>Enter your name:</B>
    <P><input type=text name=user>
    <P><input type=submit>
</form>
</body></html>

после введения имнени и нажатия на submit в брузере получил ответ

Error response

Error code: 403

Message: CGI script is not executable ('/cgi-bin/cgi101.py').

Error code explanation: 403 - Request forbidden – authorization will not help.


отредактировал файл cgi101.py

#!/usr/bin/env python
import cgi
form = cgi.FieldStorage()                 # parse form data
print('Content-type: text/html\n')        # hdr plus blank line
print('<title>Reply Page</title>')        # html reply page
if not 'user' in form:
    print('<h1>Who are you?</h1>')
else:
    print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form['user'].value))


никакого эффекта не последовало
гуглёж пока тоже не помог
Иcпользую Ubuntu, интерпритатор python 3.4.3
путь к итерпритатору /usr/bin

вот сценарий сервера
"""
Implement an HTTP web server in Python that knows how to run server-side
CGI scripts coded in Python;  serves files and scripts from current working
dir;  Python scripts must be stored in webdir\cgi-bin or webdir\htbin;
"""
import os, sys
from http.server import HTTPServer, CGIHTTPRequestHandler
webdir = '.'   # where your html files and cgi-bin script directory live
port   = 8888    # default http://localhost/, else use http://localhost:xxxx/
os.chdir(webdir)                                       # run in HTML root dir
srvraddr = ("", port)                                  # my hostname, portnumber
srvrobj  = HTTPServer(srvraddr, CGIHTTPRequestHandler)
srvrobj.serve_forever()                                # run as perpetual daemon



вот адрес в браузере
http://localhost:8888/cgi-bin/cgi101.py

Пожалуйста подскажите если кто сталкивался.
py.user.next
Была тема.
palzuncoff
тему прочел, права предоставил не ограничиные
теперь ошибку не выдает
но после запуска cgi101.py в браузере открывается просто пустое окно, абсолютно белый лист
вот что пишет сервер
127.0.0.1 - - “POST /cgi-bin/cgi101.py HTTP/1.1” 200 -
127.0.0.1 - - CGI script exit status 0x7f00
127.0.0.1 - - “POST /cgi-bin/cgi101.py HTTP/1.1” 200 -
127.0.0.1 - - CGI script exit status 0x7f00
127.0.0.1 - - “POST /cgi-bin/cgi101.py HTTP/1.1” 200 -
127.0.0.1 - - CGI script exit status 0x7f00
127.0.0.1 - - “POST /cgi-bin/cgi101.py HTTP/1.1” 200 -
127.0.0.1 - - CGI script exit status 0x7f00
127.0.0.1 - - code 404, message File not found
127.0.0.1 - - “GET /favicon.ico HTTP/1.1” 404 -
127.0.0.1 - - “POST /cgi-bin/cgi101.py HTTP/1.1” 200 -
127.0.0.1 - - CGI script exit status 0x7f00
py.user.next
palzuncoff
тему прочел, права предоставил не ограничиные
Надо запустить скрипт, который там в архиве.
palzuncoff
)))) работает отлично, осмелюсь спросить а вчем проблемма?
дело в сервере? дальше на протяжении заданий пользоватся им?
py.user.next
palzuncoff
дело в сервере?
Позаменяй части: замени сервер, оставь скрипты; замени скрипты, оставь сервер.
Так определишь, где проблема есть, а где нет.
palzuncoff
Я все проверил, сопоставил и выяснил, что некоректно работает исходный файл из учебника cgi101.py,
в скаченом архиве ему соответствует reply.py. Я стал заменять фрвгменты кода копируя их из reply.py, но после повторных запусков ничего не происходило. Затем я просто скопировал все содержимое reply.py и перенёс его в cgi101.py (то есть cgi101.py стал полностью идентичен reply.py), и вновь ничего не произошло (Браузер по прежнему выдавал чистый лист). Однако если переписать в эту папку reply.py и переименовать в cgi101.py (удалив исходный разумеется) то все работает как надо.

все прверил трижды, при запущеном сервере и перезагружая его, никакого эффекта.



py.user.next
Возьми тот cgi101.py и прикрепи его к сообщению.
palzuncoff
вот он cgi101.py исходник из учебника
py.user.next
Там сервер не понимает \r в концах строк. Если их удалить, всё нормально.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB