У меня есть скрипт на python, который должен анализировать файл и производить вывод на диск, а также возвращать веб-страницу, ссылающуюся на выводимые файлы. При запуске с файлом, отправленным из HTML-формы, я не получаю обратно HTML-вывод, просто страница с ошибкой 500, а error_log содержит строку:
[Пн, 19 апреля 15:03:23 2010] [ошибка] [клиент xxx.xxx.121.79] Преждевременное завершение заголовков скриптов: uploadcml.py, реферер: http://xxx.ch.cam.ac.uk:9000/
Однако файлы, которые должен сохранять сценарий, действительно сохраняются на диск.
Если я запускаю его без каких-либо аргументов, скрипт возвращает правильный HTML-код, указывающий, что файл не был проанализирован.
Вся информация, которую я нашел в Интернете о преждевременном конце заголовков скриптов, подразумевает, что это связано либо с отсутствующим заголовком, либо с отсутствием разрешений на скрипте python, но ни то, ни другое не может относиться ко мне.
Первые строки скрипта:
#!/home/nwe23/bin/bin/python
import cgitb; cgitb.enable()
import cgi
import pybel,openbabel
import random
print "Content-Type: text/html"
print
поэтому при запуске я не вижу способа, чтобы он не смог вывести заголовок, и он выводит заголовок при запуске без файла для анализа, но при получении файла выдает ошибку (но все равно анализирует файл и сохраняет вывод на диск!).
Кто-нибудь знает, как это происходит и что можно сделать, чтобы это исправить?
Я попытался добавить неправильно введенный трюк (такой как foobar) в различных точках файла, и это приводит к добавлению ошибки отступа в error_log, где бы он ни находился, даже если это самая последняя строка в сценарии. Ошибка преждевременного заголовка сценария остается, хотя. Означает ли это, что скрипт выполняется до конца?
[EDIT]
Мне удалось заставить его работать сейчас, кажется, что один из вызовов внешней библиотеки C ++ через SWIG не удался, но не было получено полезного сообщения об ошибке. Я исправил проблему с этим, и теперь скрипт работает правильно.
Удивительно, что единственная ошибка в error_log касалась заголовков скриптов, когда произошел сбой при вызове некоторой удаленной библиотеки. Я полагаю, это опасность вызова не-Python кода?
[/ EDIT]