Webapper Siden 2004.
500 Intern Serverfeil
…og hvordan å fikse det.
det korte svaret: dette er vanligvis en tillatelsesfeil på CGIscript, som er lett å fikse. Gå TIL FTP-klienten, eller nettstedet filemanager, og markere ELLER høyreklikk PÅ cgi script. Velg deretter egenskaper, Eller Tillatelser, eller “Chmod”, og sett den til world-executable: thats0755, eller a + rx, eller-rwxr-xr-x. ikke bruk 0777 (a + rwx eller-rwxrwxrwx). Og cgi-bin-katalogen selv bør også være 0755, ikke 0777.
det lange svaret:når du kjører Et Perl CGI-skript som FileChucker orUserBase, kan du se meldingen “Intern Serverfeil”i nettleseren din. Meldingen vil vanligvis også si noe som “vennligst sjekk serverens feillogg for mer informasjon.”Du burde gjøre det-meldingen som skrives ut til feilloggen, vil ofte fortelle deg nøyaktig hva problemet er. Apache feilloggen, for eksempel, er ofte plassert på/var/log /apache/error_log eller/var/log / apache2 / error_log (ornoen ganger “feil.logge”).
hvis du ikke har tilgang til feilloggen, er det neste enkleste å gjøre ålag en sikkerhetskopi av skriptet, åpne originalen og slett alt innhold, og legg bare disse 3 linjene til filen:
#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";
(Merk: hvis serveren Er Et Windows-system, erstatt den første linjen ovenformed enten #!perl eller #!c:\path\to\perl.exe.)
prøv nå å få tilgang til siden i nettleseren din igjen. Hvis det fungerer (du ser ” testing…”som sin utgang) så vet du at serveren din er minst konfigurertriktig for å kjøre Perl CGI-skript. Hvis det ikke virker, kan det hende at problemet er i serverkonfigurasjonen, i stedet for Med CGIscript. (For eksempel, er du sikker på at Du faktisk Har Perl installert? Nesten ALLE UNIX / Linux / OS X-servere gjør det, Men Windows-servere må vanligvishar det installert manuelt, fra en gratis pakke som ActivePerl.)
Forutsatt at serveren din er riktig konfigurert for å kjøre CGI-skript, kan problemet ditt være en av disse vanlige årsakene Til Den Interne Serverfeilen:
Problemer utenfor skriptet:
- Katalog tillatelser: din cgi-bin-katalog skal være chmodded som 0755, ikke 0777. Tilsvarende hvis skriptet ditt er kl …/ cgi-bin / foo / bar.cgi, foo-katalogen må ikke være world-writable (0777). Dette skyldes at mange servere vil nekte å utføre CGI-skript i world-writabledirectories, som en sikkerhetsforanstaltning.
- filtillatelser: CGI-skriptet ditt selv må også være 0755 og ikke 0777, av samme grunner.
- Overføringsmoduser: hvis DU bruker FTP til å overføre cgi-skriptet til yourserver, ER FTP-klienten sannsynligvis satt TIL automatisk overføringsmodus; det er, det vil prøve å finne ut om DU skal bruke BINÆR eller ASCII-modus utenspør deg. Men avhengig av OM CGI-skriptet ditt kom fra aWindows eller UNIX-systemet, og om Det skal til Et Windows eller UNIXsystem, må du kanskje manuelt sette FTP-klienten til å bruke Enten ASCIIOR BINÆR modus før du overfører CGI-skriptet. Prøv den ene og den andre.
- Linjeendringer: årsaken til overføringsmodusproblemet er faktisk et annet problem i seg selv: forskjellige Typer Operativsystemer (nemlig Windowsvs. UNIX / Linux / alt) bruker forskjellige tegnkoder for å representerelinjeendringer. Hvis serveren din er EN UNIX-server, men du redigerer CGI-skriptet DITT på En Windows-datamaskin med en tekstredigerer som ikke bruker UNIX – stil linjeendringer, vil det føre til problemer. Applicationslike GoLive Og Dreamweaver noen ganger får dette galt. Selv innebygde redaktører kan ikke være enige: WordPad (ikke Word) synes å få det riktig whileNotepad ødelegger det. Så prøv å åpne & lagre CGI-skripteti en annen tekstredigerer og last den opp til serveren igjen.
Problemer i skriptet:
- shebanglinjen: den første linjen I ET cgi-skript må inneholdevei til perl-binæret på serveren. På DE FLESTE UNIX-servere thisis bare #!/ usr / bin / perl eller noen ganger #!/ usr / local / bin / perl og du kankjør alltid kommandoen “hvilken perl” for å finne ut sikkert. På Windowsservers, kan du noen ganger komme unna med bare å bruke #!perl men du mayneed å spesifisere hele banen som #!c:\path\to\perl.exe.
- Faktiske skriptfeil: det er alltid mulig at det bare er en feil i Perl-koden selv. Hvis du har problemer med en scriptyou kjøpt Fra Encodable Industries, er dette usannsynlig siden manyother folk har kjøpt samme skript og kjører det justfine.
Relaterte Problemer
- Et annet vanlig problem med CGI-skript erfor tidlig slutt på skriptoverskriftsfeil.
Leave a Reply