2015-01-13 6 views
2

Я пытаюсь запустить скрипты CGI на моем веб-хосте (который работает на FreeBSD). Чтобы отладить, почему я продолжаю получать ужасную ошибку «преждевременного окончания заголовков скриптов», их поддержка рекомендовала перенаправить весь мой вывод на stderr, а не на print. Глядя, как это сделать, я столкнулся с очень старым RAMBO ticket, но похоже, что он никогда не был реализован.Выход в stderr в REBOL2?

По некоторым ответам на вопрос this question, мне кажется, что я должен сделать call {echo Hello, world >&2}, но это не сработает.

Как написать stderr в REBOL2?

+0

Другое место для отладки проблем CGI является добавление 'Пе [«Content-тип: текст/обычный»CRLF CRLF]' право как самый первый после заголовка 'REBOL [...]'. – earl

+0

К сожалению, даже сценарий с линией shebang, заголовок REBOL, и который все еще дает мне ошибку. –

+0

Не могли бы вы показать источник этого минимального сценария CGI? – DocKimbel

ответ

0

Для моего сценария, специфичного для CGI, у меня действительно ужасное обходное решение. Поскольку запись в поток ошибок в Perl (с которым я совершенно не знаком) является один вкладыш, я в настоящее время вызова сценария REBOL из Perl и печати его вывод в стандартный вывод оттуда:

#!/usr/bin/perl 

use strict; 
use warnings; 
use CGI; 

# Note the backticks 
my $the_string = `/home/public/rebol -csw test-reb.cgi`; 

print STDERR $the_string; 
0

Этот сайт имеет некоторые предложения http://www.liquidweb.com/kb/apache-error-premature-end-of-script-headers/ , чтобы решить вашу настоящую проблему. Возможно, у вас не было заголовков, напечатанных как первое в вашем сценарии, это, должно быть, первое, что нужно сделать. Возможно, прав недостаточно, или тип файла .r не был должным образом добавлен в ваш .htaccess как cgi-файл. У вашего (правильного!) Ребольного ядра exe нет правильных прав. Или ваш скрипт заканчивается бесконечным циклом?