LAMPP - CGI-Script не работает

Привет

У меня есть веб-сервер LAMPP. Я попытался открыть CGI-скрипт под названием «Hello.cgi».

Это содержит:

#!/usr/bin/perl
print "Hello World.\n";

Путь: /opt/lampp/htdocs/dashboard/cgi-bin/hello.cgi

Когда я открываю: «127.0.0.1/dashboard/cgi-bin/hello.cgi», я получаю следующее:

Ошибка сервера!

Сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос.

Сообщение об ошибке: конец вывода скрипта перед заголовками: hello.cgi

Если вы считаете, что это ошибка сервера, обратитесь к веб-мастеру.

CGI Script написан на Perl.

Если вам нужна дополнительная информация о моей проблеме, скажите, пожалуйста.

~~ runasas


person runasas    schedule 27.11.2016    source источник
comment
По сути, есть 100 разных вещей, которые могут ошибаться. Вы проверили журнал сервера? Вы пробовали запустить сценарий из командной строки? Вы отправляете какие-либо заголовки HTTP?   -  person Matt Jacob    schedule 27.11.2016
comment
@MattJacob Я запустил его в командной строке, все заработало. Спасибо!   -  person runasas    schedule 27.11.2016
comment
Да, но ... это просто подтверждает, что в самом сценарии нет ничего плохого.   -  person Matt Jacob    schedule 27.11.2016
comment
Когда не скрипт, то сервер?   -  person runasas    schedule 27.11.2016
comment
stackoverflow.com/ questions / 2165022 /   -  person Matt Jacob    schedule 27.11.2016


Ответы (1)


Во-первых, вы никогда не должны писать программу на Perl без включения строк use strict; и use warnings;.

Во-вторых, если у вас есть проблемы с программой CGI, вы должны проверить журнал ошибок веб-сервера для получения более подробной информации о проблеме.

В-третьих, выходные данные программы CGI должны включать заголовок типа контента. Итак, вы захотите добавить следующее:

print "Content-Type: text/plain\015\012\015\012";

Это станет проще, если вы воспользуетесь модулем CGI:

use CGI;
print header('text/plain');

Но на самом деле в 2016 году вам не следует писать программы CGI - есть множество хороших альтернатив доступно.

person Dave Cross    schedule 28.11.2016