Es gibt mehrere verschiedene Ursachen für diesen “Internal Server Error” und folglich auch verschiedene Lösungsansätze, die einer nach dem anderen durchgearbeitet werden müssen, um den Fehler zu beseitigen.
1. Wenn das Skript sich nicht im Ordner cgi-bin befindet, sollten Sie im Confixx die Option CGI/Perl außerhalb cgi-bin aktivieren. Diesen Punkt finden Sie in der Confixx-Übersicht.
2. Scheidet diese erste Möglichkeit aus, sollten Sie die Rechte des Skriptes überprüfen. Diese sollten sowohl für das Verzeichnis (meistens cgi-bin), als auch für das Skript selbst 755 sein. Es ist darauf zu achten, dass die Datein per FTP-Programm im Binärmodus auf den Server geladen werden.
3. Ist auch das nicht die Ursache, kommt ein Problem mit den Zeilenenden in Frage. Sie müssen wissen, dass Windows anders als Unix Zeilenenden in Textdateien anders abspeichert. Windows verwendet dazu einen CarriageReturn (Wagenrücklauf) und ein NewLine (neue Zeile). Unix lediglich ein NewLine. In der Regel sieht die erste Zeile eines CGI-Skripts in etwa so aus:
#!/usr/bin/perl
Da Windows nun noch den Wagenrücklauf einfügt, “sieht” Unix diesen Pfad nun so:
#!/usr/bin/perl\CR
Diesen Intepreter gibt es jedoch nicht, die Shell gibt “Bad Interpreter” zurück, ohne einen Content-Type zu senden. Der Apache quittiert das dann mit einem “Premature end of script headers”, im Browser sieht man dann die besagte Fehlermeldung. Man kann das in diesem Beispiel verhindern, indem man einen unkritischen Parameter hinter den Interpreterpfad schreibt. Bei Perl ist das bspw. -X, um die Warnungen abzuschalten. Die erste Zeile sollte also folgendermaßen aussehen:
#!/usr/bin/perl -X