webbappar sedan 2004.
500 Internt Serverfel
…och hur man fixar det.
det korta svaret: detta är vanligtvis ett behörighetsfel på ditt CGIscript, vilket är lätt att fixa. Gå till din FTP-klient, eller din webbplats filhanterare, och markera eller högerklicka på CGI-skriptet. Välj sedanegenskaper, eller behörigheter, eller “Chmod”, och ställ in den på World-executable: that ‘ s0755, eller A+rx, eller-rwxr-xr-x. använd inte 0777 (a+rwx eller-rwxrwxrwx). Och din cgi-bin-katalog själv bör också vara 0755, inte 0777.
det långa svaret:när du kör ett Perl CGI-skript som FileChucker orUserBase kan du se meddelandet “Internal Server Error”i din webbläsare. Meddelandet säger vanligtvis också någotsom “kontrollera serverns fellogg för mer information.”Du borde göra det-meddelandet som skrivs ut till felloggen kommer ofta att berätta exakt vad problemet är. Apache-felloggen, till exempel, är ofta placerad på/var/log /apache/error_log eller/var/log / apache2 / error_log (elleribland “fel.logga”).
om du inte har tillgång till felloggen är det nästa enklaste att göra en säkerhetskopia av skriptet, öppna sedan originalet och ta bort alla dessinnehåll och lägg bara till dessa 3 rader i filen:
#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";
(om servern är ett Windows-system, ersätt sedan den första raden ovanmed antingen #!perl eller#!c:\path\to\perl.exe.)
försök nu komma åt sidan i din webbläsare igen. Om det fungerar (du ser ” testning…”som dess utgång) då vet du att din server är åtminstone konfigureradkorrekt för att köra Perl CGI-skript. Om det inte fungerar kan det betyda att problemet är i serverkonfigurationen, snarare än med ditt CGIscript. (Till exempel, är du säker på att du faktiskt har Perl installerat? Praktiskt taget alla UNIX/Linux/OS X-servrar gör det, men Windows-servrar behöver vanligtvis ha det installerat manuellt, från ett gratis paket som ActivePerl.)
förutsatt att din server är korrekt konfigurerad för att köra CGI-skript kan ditt problem vara en av dessa vanliga orsaker till det interna Serverfelet:
problem utanför skriptet:
- katalogbehörigheter: din cgi-bin katalog bör chmodded som 0755, inte 0777. På samma sätt om ditt manus är på …/cgi-bin/foo / bar.CGI, Foo-katalogen får inte vara världsskrivbar (0777). Detta beror på att många servrar kommer att vägra att köra CGI-skript inom world-writabledirectories, som en säkerhetsåtgärd.
- filbehörigheter: ditt CGI-skript måste också vara 0755 och inte 0777,av samma skäl.
- överföringslägen: om du använder FTP för att överföra CGI-skriptet till din server, är din FTP-klient förmodligen inställd på automatisk överföringsläge; det är, det kommer att försöka ta reda på om du vill använda binärt eller ASCII-läge utanfråga dig. Men beroende på om ditt CGI-skript kom från aWindows eller UNIX-system, och om det går till ett Windows eller UNIXsystem, kan du behöva manuellt ställa in din FTP-klient för att använda antingen ASCIIor binärt läge innan du överför ditt CGI-skript. Prova en och sedan den andra.
- Linjeändringar: orsaken till överföringslägesproblemet är faktiskt en annanproblemet i sig: olika typer av operativsystem (nämligen Windowsvs. UNIX / Linux / everything) använd olika teckenkoder för att representeralinjeändringar. Om din server är en UNIX-server, men du redigerarditt CGI-skript på en Windows-dator med en textredigerare som inte använder linjeändringar i UNIX-stil, kommer det att orsaka problem. Applicationslike GoLive och Dreamweaver får ibland detta fel. Även inbyggda redaktörer kan inte hålla med: WordPad (inte Word) verkar få det rätt näranotepad förstör det. Så försök öppna & spara ditt CGI-skripti en annan textredigerare och ladda upp den till servern igen.
problem i skriptet:
- shebang line: den första raden i ett CGI-skript måste innehållapath till Perl binär på servern. På de flesta UNIX-servrar är detta bara#!/usr / bin / perl eller ibland #!/ usr/local/bin / perl och du kankör alltid kommandot “vilken perl” för att ta reda på det säkert. På Windowsservers kan du ibland komma undan med att bara använda #!perl men du kanbehöver ange hela sökvägen som #!c:\path\to\perl.exe.
- faktiska skriptfel: det är alltid möjligt att det bara finns ett fel i själva Perl-koden. Om du har problem med ett scriptyou köpt från Encodable Industries, detta är osannolikt eftersom många andra människor har köpt exakt samma manus och kör det justfine.
relaterade problem
- ett annat vanligt problem med CGI-skript är premature end of script headerserror.
Leave a Reply