webapps sinds 2004.
500 Interne Serverfout
…en hoe het te repareren.
het korte antwoord: Dit is meestal een permissies fout op uw CGIscript, die gemakkelijk te repareren is. Ga naar uw FTP-client, of uw website filemanager, en markeer of klik met de rechtermuisknop op het CGI-script. Kies dan properties, of permissies, of “Chmod”, en stel het in op world-executable: dat is 0755, of a+rx, of-rwxr-xr-x. Gebruik geen 0777 (a+rwx of-rwxrwxrwx). En je cgi-bin directory zelf zou ook 0755 moeten zijn, niet 0777.
het lange antwoord:bij het uitvoeren van een Perl CGI script zoals FileChucker orUserBase, kunt u de “interne Server Error”bericht in uw browser. Het bericht zal meestal ook iets zeggen zoals ” controleer de error-log van de server voor meer informatie.”Je zou dat moeten doen – het bericht afgedrukt op de error log zal vaak vertellen u precies wat het probleem is. De Apache error log, bijvoorbeeld, isoften bevindt zich in/var/log/apache /error_log of/var/log/apache2 / error_log (of Sometimes “error.log”).
als u geen toegang hebt tot het foutenlogboek, is het volgende eenvoudigste om een back-up van het script te maken, dan het origineel te openen en alle inhoud ervan te verwijderen, en alleen deze 3 regels aan het bestand toe te voegen:
#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";
(opmerking: als de server een Windows systeem is, vervang dan de eerste regel hierboven met #!perl of #!c:\path\to\perl.executable.)
Probeer nu opnieuw toegang te krijgen tot de pagina in uw browser. Als het werkt (zie ” testen…”als de uitvoer) dan weet je dat je server op zijn minst is geconfigureerdproperly voor het uitvoeren van Perl CGI scripts. Als het niet werkt, dan kan dat betekenen dat het probleem zich in de server configuratie bevindt, in plaats van met je CGIscript. (Bijvoorbeeld, weet u zeker dat u Perl daadwerkelijk hebt geïnstalleerd? Vrijwel alle UNIX/Linux / OS X-servers doen dat, maar Windows-servers moeten het meestal handmatig installeren, vanuit een gratis pakket zoals ActivePerl.)
als uw server goed is geconfigureerd voor het uitvoeren van CGI-scripts, kan uw probleem een van deze veel voorkomende oorzaken zijn voor de interne serverfout:
problemen buiten het script:
- Maprechten: je cgi-bin directory moet chmodded worden als 0755, niet 0777. Op dezelfde manier als je script is op …/ cgi-bin / foo / bar.cgi, de Foo directory mag niet beschrijfbaar zijn (0777). Dit komt omdat veel servers zullen weigeren om CGI scripts uit te voeren binnen wereld-beschrijfbare directory ‘ s, als een veiligheidsmaatregel.
- bestandsrechten: uw CGI-script zelf moet ook 0755 zijn en niet 0777,om dezelfde redenen.
- overdrachtsmodi: als u FTP gebruikt om het CGI-script over te dragen naar uw server, dan is uw FTP-client waarschijnlijk ingesteld op automatische overdrachtsmodus; dat is, het zal proberen om erachter te komen of BINARY of ASCII mode te gebruiken zonder je te vragen. Maar afhankelijk van of je CGI script afkomstig is van een Windows of UNIX systeem, en of het naar een Windows of Unix systeem gaat, moet je je FTP client handmatig instellen om ofwel ASCIIor BINARY mode te gebruiken voordat je je CGI script overzet. Probeer het ene en dan het andere.
- regeleinden: de oorzaak van het probleem met de overdrachtsmodus is eigenlijk een ander probleem op zich: verschillende soorten besturingssystemen (namelijk Windowsvs. UNIX/Linux / everything) verschillende karaktercodes gebruiken om regeluiteinden weer te geven. Als uw server een UNIX-server is, maar u bewerkt uw CGI-script op een Windows-computer met een tekst-editor die geen UNIX-stijl regeleinden gebruikt, zal dit problemen veroorzaken. Applicaties zoals GoLive en Dreamweaver hebben dit soms verkeerd. Zelfs ingebouwde editors kunnen het niet eens: WordPad (geen woord) lijkt het goed te krijgen, terwijlotepad het verknoeit. Probeer dus & te openen om uw CGI-scriptop te slaan in een andere teksteditor en het opnieuw naar de server te uploaden.
problemen binnen het script:
- de shebang lijn: de eerste regel van een CGI script moet het pad naar de Perl binary op de server bevatten. Op de meeste UNIX servers is dit gewoon #!/ usr / bin / perl of soms #!/ usr / local / bin / perl en je kunt altijd het commando “which perl” uitvoeren om er zeker van te zijn. Op Windowsservers, kun je soms wegkomen met gewoon het gebruik van #!perl maar je moet misschien het volledige pad specificeren zoals #!c:\path\to\perl.executable.
- werkelijke scriptfouten: het is altijd mogelijk dat er gewoon een fout zit in de Perl-code zelf. Als je problemen hebt met een scriptyou gekocht van Encodable Industries, is dit onwaarschijnlijk omdat veel andere mensen hebben gekocht hetzelfde exacte script en draaien het justfine.
gerelateerde problemen
- een ander veelvoorkomend probleem met CGI-scripts is de Premature end of script headerserror.
Leave a Reply