Как выполнить Python CGI Script? - PullRequest
4 голосов
/ 15 июня 2011

Я хочу выполнить скрипт Python CGI в файле .shtml, но я просто не могу понять, как это сделать.Я уже нашел несколько способов ?, но ничего не получалось.И там было намного сложнее найти что-то, что действительно показывает, как выполнить скрипт, а не как его написать!; /

Мой HTML: http://pastebin.com/4sNZTZNQ

И мой сценарий: http://pastebin.com/w5vGXCBp

Я очень плохо знаком с CGI и любыми Webstuff, но я программирую сPython более полугода.

PS: Извините за запутанное форматирование кода, я сейчас загрузил nit на pastebin: S

// edit: Хорошо, теперь еще немного информации, потому что этовсе еще не работает.

С heliohost.org меня направили на http://area52.heliohost.org/cgi-bin/snakecharmer.py, где вы можете найти пути к интерпретаторам Python.

Это моя структура папок:
- public_html - .htaccess - main.py - index.shtml

Содержимое .htaccess:

Options +ExecCGI
AddHandler cgi-script .py

Содержимое main.py:

#! /usr/local/bin/python
print "Content-Type: text/html"
print

print "Hello World!"

Содержимоеof index.shtml: http://pastebin.com/Trg8sXBc

Теперь, нажав на ссылку, появляется «500 InternalServerError», и я не понимаю, почему.: (

Журнал ошибок сервера просто говорит это:

[Wed Jun 15 14:41:26 2011] [error] [client 84.151.252.129] File does not exist: /home/nux95/public_html/500.shtml, referer: http: niklasrosenstein.heliohost.org/

Ответы [ 2 ]

7 голосов
/ 24 января 2012

Вот кое-что, что я написал некоторое время назад.

Есть несколько советов, как заставить Python работать в CGI.

  1. Всегда просматриватьстраницы через Apache.Обратите внимание, что просмотр файлов в файловой системе через браузер работает для большинства вещей на html-странице, но не работает для CGI.Чтобы скрипты работали, их необходимо открыть через файловую систему htdocs.Адресная строка вашего браузера должна выглядеть следующим образом:

    \\127.0.0.1\index.html or
    \\localhost\index.html
    

    Если вы откроете файл через файловую систему, CGI не будет работать.Например, если это в адресной строке вашего браузера:

    c:\Apache\htdocs\index.html (or some other example location)
    
  2. Конвертировать конец строк сценариев в формат Unix: у большинства редакторов есть опции «показать конец строк» ​​изатем инструмент для преобразования из Unix в формат ПК.Конец строк должен иметь формат Unix.

  3. Укажите путь к интерпретатору Python в первой строке скрипта CGI: в качестве строки должна быть указана одна из следующих строк:Первая строка вашего скрипта Python CGI:

    #!C:\Python25\Python.exe
    #!/usr/bin/python
    

    Верхняя строка используется при отладке на ПК, а нижняя - для сервера, такого как 1and1.Я оставляю строки, как показано, и затем редактирую их, как только они будут на сервере, удаляя первую строку.

  4. Напечатайте тип содержимого с указанием HTML перед печатью любого другого вывода: это может бытьэто можно сделать, просто добавив следующую строку где-то в самом начале скрипта:

    print "Content-Type: text/html\n\n"
    

    Обратите внимание, что требуется 2 конца строки.

  5. Настройка скриптов Python для отладкиинформация: Импортируйте следующее, чтобы получить подробную информацию об отладке.

    import cgitb; cgitb.enable()
    

    Альтернативой, если cgitb недоступен, является следующее:

    import sys
    sys.stderr = sys.stdout
    
  6. НаНа сервере должны быть установлены разрешения для скрипта Python.После загрузки файлов обязательно отредактируйте первую строку и задайте права доступа для запуска файла.

Проверьте, можете ли вы напрямую запустить скрипт Python.Если вы не можете это исправить, выполните действия, описанные выше (2-6).Затем, когда скрипт Python работает, отладьте shtml.

0 голосов
/ 16 июля 2014

ИСПОЛЬЗОВАНИЕ

print("hello world")

вместо

print "hello world"

или у вас будут проблемы с питоном 3. + версии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...