Преждевременный конец заголовков скрипта - Что, понятия не имею!

Я пытаюсь выполнить простой скрипт Perl на своем сервере, и я получаю внутренний сервер 500, и когда я проверяю журналы ошибок, он показывает:

Premature end of script headers: test.pl

Вот перл-скрипт:

#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "testing...\n";

Моя папка cgi-bin имеет права 0755. Сам скрипт тоже 0755. Скрипт принадлежит апачу и находится в группе апачей. Скрипт отлично работает через командную строку.

В чем проблема и как это исправить?!

Спасибо всем за любую помощь!

Обновлять

Интересная находка в suExec:

2010-09-14 17:38:28]: uid: (10001/som) gid: (2522/2522) cmd: test.pl
[2010-09-14 17:38:28]: target uid/gid (10001/2522 or 2521) mismatch with directory (48/0) or program (48/0)

Но моя cgi-папка такая же, как и скрипт test.pl — относится ли он к другому каталогу?


person Abs    schedule 14.09.2010    source источник
comment
IIRC, вам нужно отправить HTTP/1.1 200 OK\n перед заголовками, нет?   -  person Piskvor left the building    schedule 14.09.2010
comment
Я попробовал этот же скрипт на другом моем сервере, и он отлично работает. Я не специалист по Perl, но я думаю, что без него все в порядке, так как он работает на сервере?   -  person Abs    schedule 14.09.2010
comment
Здесь есть ряд действительно хороших вещей, которые можно попробовать при отладке этой проблемы: perlmonks.org/?node_id= 262011   -  person pjmorse    schedule 14.09.2010
comment
См. раздел Как устранить неполадки в сценарии Perl CGI?.   -  person brian d foy    schedule 14.09.2010
comment
@Piskvor - Нет. Об этом позаботится сервер.   -  person Dave Cross    schedule 14.09.2010
comment
@Piskvor Вам не нужно отправлять строку состояния HTTP. Это ответ CGI, а не ответ HTTP.   -  person brian d foy    schedule 14.09.2010
comment
Вы не упомянули ОС. Я надеюсь, что обе платформы - это UNIX?   -  person Roman Cheplyaka    schedule 14.09.2010
comment
@pjmorse - вы заслуживаете баллов, великие люди, которых вы предоставили, предложили взглянуть на журналы SuExec. Я обнаружил указанную выше ошибку (обновил свой вопрос), и с тех пор я удалил SuExec, и все работает отлично! Если бы вы могли добавить ответ, чтобы его могли увидеть другие, я выберу его как правильный ответ. Спасибо.   -  person Abs    schedule 14.09.2010


Ответы (3)


Есть много хороших советов по устранению неполадок для Perl-скриптов, выдающих это сообщение об ошибке в PerlMonks: начните здесь. Я не вижу каких-либо конкретных ошибок в вашем скрипте, и похоже, что вы рассмотрели права доступа к файлам, поэтому я бы начал с предложений по настройке Apache.

person pjmorse    schedule 14.09.2010
comment
Спасибо, пиморс. :) Каждый должен просмотреть этот список, если у вас есть какие-либо проблемы. Мне удалось выяснить, что SuExec вызывает у меня проблемы, и впоследствии я отключил его. - person Abs; 15.09.2010

Много полезных советов: Как устранить неполадки в сценарии Perl CGI.

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

person Dave Cross    schedule 14.09.2010
comment
Это было решение проблемы, с которой я столкнулся пару недель назад. Это сводило меня с ума на ночь, пока волшебным образом не разрешилось само собой, когда мне пришлось сделать chown -R по другой причине. - person brian d foy; 14.09.2010

Используйте модуль CGI, например.

use CGI qw/:standard/;
$q = CGI->new;
print $q->header('text/html');
print "testing...\n";     
person Ibrahim    schedule 14.09.2010
comment
Хороший общий совет, но не совсем ответ на вопрос. Кроме того, зачем импортировать функции CGI, а затем использовать их в режиме OO? - person Dave Cross; 14.09.2010