2014-11-30 3 views
1
에 CGI

I가 다음 CGI 스크립트를"헤더 전에 스크립트 출력의 끝"- 아파치

#!c:\cygwin\bin\perl.exe 

use CGI qw(:standard); 

my $query = $CGI->new; 

print header (
    -type => "text/html", 
    -status => "404 File not found" 
); 

print "<b>File not found</b>"; 

이 나에게 오류 제공 :

Server error! 

The server encountered an internal error and was unable to complete your request. 

Error message: 
End of script output before headers: test.cgi 

If you think this is a server error, please contact the webmaster. 
Error 500 
127.0.0.1 
Apache/2.4.10 (Win32) OpenSSL/1.0.1h PHP/5.4.31 

내가 this을 검토 한 결과를 (그리고 다른 유사한) 질문 (들), 그러나 거기에 헤더가 print ed가 아니었다.

Cygwin Perl에서 XAMPP Windows 패키지를 사용하고 있습니다.

아무도 도와 줄 수 있습니까? 감사. 당신이 $의 CGI 대신 CGI

을 사용하는 이유를 모르겠어요

+5

내부 서버 오류는 서버 로그를 읽어야한다는 것을 의미합니다. 여기서 서버 로그를 읽어야합니다. . – Quentin

+6

당신이 쓰는 모든 * Perl 프로그램의 맨 위에 * 항상'엄격한 사용'과'경고 사용'을해야합니다. 이것은 매우 간단한 첫 번째 디버깅 단계이므로 코드에 대한 도움을 다른 사람에게 요구하는 경우 특히 해당됩니다. 이 경우에는'전역 기호 "$ CGI"명시 적 패키지 이름 필요 "라는 메시지를 보았을 것입니다. 이것은 정확하게 문제의 원인입니다. – Borodin

답변

5

나는 그것은

my $query = CGI->new; 

완벽한 작업 리눅스에서 테스트해야한다고 생각합니다.

3

다른 사람들이 지적했듯이 실제로는 클래스 이름 (CGI)이 필요한 변수 ($CGI)를 사용하고 있습니다. 그러나, 내 마음 속에, 이것은 두 가지 더 질문을 제기합니다.

1/왜 처음부터 CGI 개체를 만들려고합니까? CGI (예 : print header(...))에 함수 기반 인터페이스를 사용하므로 CGI 객체가 필요하지 않습니다.

2/왜 2014 년에 CGI 프로그램을 작성 하시겠습니까? Perl 웹 프로그래밍은이 천년기로 나아 갔고 1990 년대에 막혀있는 것 같습니다 : -/

관련 문제