f = open () / работает в командной строке, но не как скрипт CGI [python] - PullRequest
1 голос
/ 12 апреля 2011
    #! /usr/bin/env python

import htmlSplitter, htmlGlue

headerContent, mainContent, sideSetup, sideContent, footerContent = htmlSplitter.split("../htdocs/bcc/register.html")


mainContent = "<h1>This is another Test</h1>"
sideContent = "<h2>Jonathan's here!</h2>"


htmlDoc = htmlGlue.glue(headerContent, mainContent, sideSetup, sideContent, footerContent)

f = open("../bcc/doctest.html", "w")
f.write(htmlDoc)
f.close()

print("Location:../bcc/doctest.html")
print

этот скрипт отлично работает, когда я запускаю его из командной строки.Однако, когда я запускаю его как скрипт CGI, он выдает ошибку «преждевременный конец заголовка скрипта».Я отладил, и было бы хорошо, если я закомментировал сегмент, который открывается, и записал «doctest.html» (так что я знаю, что другие два модуля, которые я включил, не вызывают проблему).Есть идеи, почему эта часть кода не работает как CGI-скрипт?Есть ли что-то, что я должен заменить вместо этого?

ПРИМЕЧАНИЕ: я сделал chmod a + rw для 'doctest.html', чтобы убедиться, что у скрипта есть разрешения на редактирование.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 апреля 2011

Добавьте следующее в начало вашего скрипта:

#!/usr/bin/env python
print 'Content-Type: text/html'
print

Я всегда объявлял Content-Type в моих скриптах Python CGI, это вежливо.

import cgi
import cgitb
cgitb.enable() # allows error tracebacks

cgitb покажет вам хорошую трассировку на основе веб-интерфейса, если что-то пошло не так с вашим скриптом, например, какие-либо исключения.

0 голосов
/ 12 апреля 2011

Может быть, просто ошибка копирования / вставки, но ваш шебанг, кажется, с отступом.удалите его и попробуйте запустить скрипт через командную строку на сервере, используя ./yourscript (не python yourscript, так как это, вероятно, выполняется веб-сервером)

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