Perl скрипт не работает .. (Ошибка: преждевременный конец заголовка скрипта) - PullRequest
0 голосов
/ 15 января 2010

Я пытаюсь напечатать файл XML в браузере, используя скрипт perl. Когда я пытаюсь запустить скрипт в своем браузере, у меня появляется следующая ошибка.

Server error!
The server encountered an internal error and was unable to complete your request.
Error message: 
Premature end of script headers: get_data.pl

If you think this is a server error, please contact the webmaster.

Error 500

localhost
01/15/10 14:29:28
Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1

Вот мой скрипт. Я также проверил синтаксис, используя проверку синтаксиса. Нет проблем с моей конфигурацией Perl, так как другие простые сценарии Perl работают нормально. Я думаю, что проблема будет с "использовать CGI;" Веди меня ..

#!/usr/local/bin/perl -w 
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $r = new CGI();
my $id  = $r->param('id');
if(!defined($id)) 
{
 print "Content-type: text/html\n\nMissing parameter: id\n";
 exit 1;
}
if($id eq '7007')
{
 print "Content-Type: text/xml\n\n";
 open INPUT, "get_data.xml";
 while(<INPUT>) {
 print $_; }
 close INPUT; 
}

OMG !! Я просто запустил файл, затем попытался .. он работает !!!! В чем была настоящая проблема?

Ответы [ 3 ]

5 голосов
/ 15 января 2010

Первое, что нужно сделать с 500 Internal Server Error, - это проверить в журнале ошибок веб-сервера фактическое сообщение об ошибке. Это может быть или не быть связано с Perl - одним из распространенных случаев является то, что сервер не настроен для выполнения программ CGI из местоположения, к которому вы его запрашивали.

Редактировать: Я только что попробовал здесь, и Perl работает отлично. Однако, если указан идентификатор, отличный от 7007, я получаю результат 500, потому что сценарий завершается и завершается без отправки заголовков HTTP (или чего-либо еще, в этом отношении). Вам всегда необходимо отправлять заголовки HTTP, иначе веб-сервер сообщит о "преждевременном конце заголовков сценария", поскольку он прекратил получать данные до того, как увидел конец заголовка.

2 голосов
/ 16 января 2010

Вы хотите, чтобы мое руководство по Устранение неполадок Perl CGI . Он проведет вас через шаги, которые вы должны выполнить, чтобы найти проблему.

0 голосов
/ 15 января 2010

Пожалуйста, проверьте, где Perl установлен на вашем компьютере. Пожалуйста, выполните команду «which perl» в приглашении, чтобы получить правильное местоположение. Возможно, у вас установлен perl в «/ usr / bin / perl» вместо «/ usr / local / bin / perl». В противном случае ваши сценарии кажутся нормальными.

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