Internet Apps siden 2004.

500 Intern Serverfejl

…og hvordan man løser det.

det korte svar: Dette er normalt en tilladelsesfejl på dit CGIscript, som er let at rette. Gå til din FTP-klient, eller din hjemmeside filemanager, og fremhæve eller højreklik på CGI script. Vælg derefter Egenskaber eller tilladelser eller “Chmod”, og indstil det til verdens-eksekverbar: det er0755, eller A+rks eller-rks-rks. brug ikke 0777 (a+rks eller-rks). Og din cgi-bin-mappe skal også være 0755, ikke 0777.

det lange svar:når du kører et Perl CGI-script som FileChucker orUserBase, kan du muligvis se meddelelsen “Internal Server Error”i din bro.ser. Meddelelsen vil normalt også sige somethinglike ” kontroller serverens fejllog for mere information.”Du skal gøre det-meddelelsen, der udskrives til fejlloggen, fortæller dig ofte præcis, hvad problemet er. Apache-fejlloggen er for eksempel ofte placeret på /var/log/apache/error_log eller /var/log/apache2/error_log (ellernogle gange “fejl.log”).

hvis du ikke har adgang til fejlloggen, er den næste enkleste ting at gøre atlav en sikkerhedskopi af scriptet, åbn derefter originalen og Slet alle dens indhold, og tilføj kun disse 3 linjer til filen:

#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";

(Bemærk: Hvis serveren er et system, skal du udskifte den første linje ovenformed enten #!perl eller #!c:\path\to\perl.eks.)

prøv nu at få adgang til siden i din bro.ser igen. Hvis det virker (du ser”testing…”som output) så ved du, at din server i det mindste er konfigureretkorrekt til at køre Perl CGI scripts. Hvis det ikke virker, så kan detbetyder, at problemet er i serverkonfigurationen, snarere end med dit cgiscript. (For eksempel er du sikker på, at du faktisk har Perl installeret? Stort set alle servere gør det, men servere skal normalt have det installeret manuelt fra en gratis pakke som ActivePerl.)

hvis du antager, at din server er konfigureret korrekt til at køre CGI-scripts, kan dit problem være en af disse almindelige årsager til den interne serverfejl:

problemer uden for scriptet:

  1. Directory tilladelser: din cgi-bin mappe skal chmodded som 0755, ikke 0777. Tilsvarende hvis dit script er på …/ cgi-bin / foo / bar.cgi, foo-mappen må ikke være verdensskrivbar (0777). Dette skyldes, at mange servere vil nægte at udføre CGI-scripts i verdensskrivbare mapper som en sikkerhedsforanstaltning.
  2. filtilladelser: dit CGI-script skal også være 0755 og ikke 0777 af samme grunde.
  3. Overførselstilstande: hvis du bruger FTP til at overføre CGI-scriptet til yourserver, er din FTP-klient sandsynligvis indstillet til automatisk overførselstilstand; det er, det vil forsøge at finde ud af, om du vil bruge binær eller ASCII-tilstand udenspørger dig. Men afhængigt af om dit CGI-script kom fra et vindue eller et enkelt system, og om det går til et vindue eller et enkelt system, skal du muligvis manuelt indstille din FTP-klient til at bruge enten ASCIIOR binær tilstand, før du overfører dit CGI-script. Prøv den ene og den anden.
  4. Linjeendinger: årsagen til overførselsmodusproblemet er faktisk et andetproblem i sig selv: forskellige typer operativsystemer (nemlig Vinduer. Brug forskellige tegnkoder til at repræsenterelinjeendinger. Hvis din server er en unik server, men du redigerer dit CGI-script på en computer med en teksteditor, der ikke bruger unikke linjeafslutninger, vil det medføre problemer. Applikationer som GoLive og Drømmevæver får nogle gange dette forkert. Selv indbyggede redaktører kan ikke være enige: Ordplade (ikke ord) ser ud til at få det rigtigt, mens notepad ødelægger det. Så prøv at åbne & gemme din CGI Scripti en anden teksteditor og uploade den til serveren igen.

problemer i scriptet:

  1. shebang line: den første linje i et CGI-script skal indeholdestien til Perl binær på serveren. På de fleste unikke servere thisis bare #!/ usr / bin / perl eller nogle gange #!/ usr/local/bin / perl og du kankør altid kommandoen “hvilken perl” for at finde ud af det helt sikkert. På Vinduesservere kan du nogle gange slippe af sted med bare at bruge #!perl men du måskeskal angive den fulde sti som #!c:\path\to\perl.eks.
  2. faktiske scriptfejl: det er altid muligt, at der simpelthen er en fejli selve Perl-koden. Hvis du har problemer med et scriptdu har købt fra Kodbare industrier, er det usandsynligt, da mange andre mennesker har købt det samme nøjagtige script og kører det justfine.

relaterede problemer

  1. et andet almindeligt problem med CGI-scripts erfor tidlig afslutning af script headerserror.

Leave a Reply