Внутренняя ошибка сервера 500 - Python, CGI - PullRequest
3 голосов
/ 20 июля 2011

Мой файл .py выполняется нормально в терминале, но выдает эту ошибку в браузере

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
...
...

Вот файл .py:

#!/usr/bin/python
import cgi
import cgitb; cgitb.enable()
print "Content-Type: text/html\n\n"     # HTML is following
print                                   # blank line, end of headers

print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"

Должен ли я сохранить это какфайл .cgi?Я пытался с теми же ошибками, я пробовал много файлов, как этот, и ни один не работает, я уверен, что сервер apache работает, так как есть другие сценарии .cgi, работающие из той же директории без проблем.

У меня естьтакже пытался: #! / usr / local / bin / python & #! / usr / bin / local / python

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ вывод журнала ошибок: (2) Нет такогофайл или каталог: exec из «... / ... / ... / test.py» не удалось Преждевременное завершение заголовков сценария: test.py

1 Ответ

0 голосов
/ 20 июня 2017

Вот кое-что, что я написал некоторое время назад.При поиске и устранении неполадок в Python CGI следует обратить внимание на несколько полезных моментов.

Есть несколько советов по настройке Python для работы в CGI.1007 * Добавьте python как CGI, изменив в конфигурации следующее:

    Options Indexes FollowSymLinks ExecCGI
    AddHandler cgi-script .cgi .py
  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.

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