2013-10-03 4 views
7

Я не могу получить модуль python cgitb для вывода трассировки стека в браузере. У меня нет проблем в среде оболочки. Я запускаю Centos 6 с python 2.6.python cgitb не работает через браузер

Вот пример простой код, который я использую:

import cgitb; cgitb.enable() 

print "Content-type: text/html" 
print 

print 1/0 

Я получаю Внутренняя ошибка сервера вместо напечатанный подробный отчет. Я пробовал разные типы ошибок, разные браузеры и т. Д.

Когда у меня нет ошибки, конечно, python отлично работает. Он напечатает ошибку в тонкой оболочке. Точка cgitb предназначена для печати ошибки вместо возврата «Внутренней ошибки сервера» в браузере для большинства ошибок. В основном я просто пытаюсь получить cgitb для работы в среде браузера.

Любые предложения?

ответ

-1

я просто процитировать docs:

Убедитесь, что ваш скрипт для чтения и выполнения «других»; режим файла Unix должен быть 0755 октал (используйте chmod 0755 filename).

Убедитесь, что первая строка сценария содержит #! начиная в колонке 1, за которым следует имя пути интерпретатора Python, например:

#!/usr/local/bin/python

+0

OP сказал, что без ошибок сценарий работает нормально. поэтому это не проблема с выполнением CGI. Прокомментируйте свой ответ в случае, если я ошибаюсь, потому что мне тоже нужно это запустить, и cgitb просто кажется поймать и действовать по моей проблеме. – Chris

+0

Позвольте мне не согласиться с вами. В оболочке вы можете запустить файл, передав 'python' перед именем файла. В CGI вы должны убедиться, что сам файл является исполняемым, поскольку движок CGI может не знать, как его запустить. Вы должны поместить значение shebang в начало файла. – baldr

+0

Согласовано. Однако я считаю, что ответ заставляет меня думать, что это правильное и единственное решение проблемы. Особенно «просто». Я думаю, он должен сказать: «Пожалуйста, убедитесь, что у вас есть основы CGI». Я понимаю, что я предполагаю, что на самом деле есть * разные решения этой проблемы в сценарии OP. – Chris

0

Хорошо, я получил моя проблема фиксированной и OP привел меня к этому: даже если cgitb выведет HTML по умолчанию, он не выведет заголовок! И Apache не нравится, что и может дать вам некоторые глупые ошибки, как:

<...blablabla>: Response header name '<!--' contains invalid characters, aborting request

Это указывает на то, что Apache по-прежнему работает свой путь через заголовки, когда он уже возникли некоторые HTML. Посмотрите, что распечатывает OP до того, как будет запущена ошибка. Это заголовок, и вам это нужно. Включая пустую строку.

 Смежные вопросы

  • Нет связанных вопросов^_^