Найти - Пользователи
Полная версия: Не работает cgi-сценарий
Начало » Python для новичков » Не работает cgi-сценарий
1 2 3
kozlo22
py.user.next
какой код веб-сервера ?
Этого:
kozlo22
И еще вопрос: вот есть веб-сервер(тоже пример из книги) pastebin.com/qKrdvAun.
py.user.next
kozlo22
Прикреплённый файлы:
attachment apache2.conf (8,2 KБ)
ну да, нету, походу, где-то внутри
выполни
grep -r 'cgi-bin' /etc/apache2

kozlo22
вот есть веб-сервер
не заметил; я его запустил, он скрипт запускает, но тот ничего не выводит, в отличие от apache

ещё пришлось править скрипт
#!/usr/bin/python3
 
import cgi
 
form = cgi.FieldStorage()
print('Content-type: text/html\n')
print('<title>Reply Page</title>')
 
if not 'user' in form:
    print('Who are you?')
else:
    print('<h1> Hello <i>{}<i>!</h1>'.format(cgi.escape(form['user'].value)))
иначе работало только Who are you?
kozlo22
py.user.next
/etc/apache2/conf.d/localized-error-pages:#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
/etc/apache2/sites-available/default:	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
/etc/apache2/sites-available/default:	<Directory "/usr/lib/cgi-bin">
/etc/apache2/sites-available/default-ssl:	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
/etc/apache2/sites-available/default-ssl:	<Directory "/usr/lib/cgi-bin">
/etc/apache2/sites-available/default-ssl:	<Directory /usr/lib/cgi-bin>
/etc/apache2/sites-enabled/000-default:	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
/etc/apache2/sites-enabled/000-default:	<Directory "/usr/lib/cgi-bin">
Вот, что команда выдает
py.user.next
kozlo22
/usr/lib/cgi-bin
вот туда положи скрипт, поставь ему владельца и право выполнения для владельца
попробуй поставить apache, если не прокатит, то www-data
sudo chown apache:apache /usr/lib/cgi-bin/f.cgi
sudo chmod u+x /usr/lib/cgi-bin/f.cgi

убедись, что сервер запущен
netstat -tulpan
80 порт

и открой в браузере адрес
http://localhost/cgi-bin/f.cgi
должна открыться пустая страница

в html-файле запиши этот адрес в action
kozlo22
py.user.next
вот туда положи скрипт, поставь ему владельца и право выполнения для владельца
Сделал.
py.user.next
попробуй поставить apache
ну дык уже ш установлен.

В action прописал "http://localhost/cgi-bin/cgi101.py" - заработало.

Спасибо за помощь!
py.user.next
kozlo22
ну дык уже ш установлен.
имеется в виду пользователь, а не пакет
иначе право на выполнение нужно будет ставить всем пользователям
и любой, прошедший в каталог, сможет его запустить
kozlo22
Немного продвинулся и опять появилась проблема.
В прикрепленном файле вы можете видеть реализацию веб-сайта.
Cgi-скрипт(peoplecgi.py) я помещаю в /usr/lib/cgi-bin, там же лежит скрипт, с которым у меня были проблемы ранее (cgi101.py). В эту же директорию я поместил файл-хранилища class-shelve.db. Так вот, когда я обращаюсь за cgi скриптом:
http://localhost/cgi-bin/peoplecgi.py
выскакивает внутрення ошибка сервера.



py.user.next
там, вообще, ошибка в коде веб-интерфейса - нужно пустую строку вывести после заголовков, там в комментарии написано, а пустой строки на самом деле нет

ls -l /usr/lib/cgi-bin
прикрепи ещё peoplecgi.py
kozlo22
py.user.next
Вы это имели ввиду:
print('Content-type: text/html\n')
?

-rwxrwxrwx 1 root root 2235 июля   9 19:29 /usr/lib/cgi-bin/peoplecgi.py
py.user.next
kozlo22
print('Content-type: text/html\n')
да, но ошибки могут быть не только здесь, поэтому нужно выкладывать сам скрипт, а не то, что в книге
также ошибки могут возникать, когда какие-то файлы, используемые скриптом, недоступны, поэтому нужно выкладывать полный вывод ls по ним
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