Wenn ein CGI-Script (Perl, Python, oder sogar PHP) lediglich ein 500er-Fehler ausliefert und im error_log nur ein <code>Premature end of script headers<code> erscheint, so kann dies viele Ursachen haben.code>code>
Hier mal die typischen Fehlerquellen:
- Ist das Script im korrekten Modus (ASCII) hochgeladen?
Evtl. mit dos2unix nach arbeiten. Hier kommt es vorallem auf den richtigen Abschluß der Shebang-Zeile an. Es darf dort kein \0x10 (also Zeilenvorschub) stehen sondern nur ein \0x13 (CR == Carrige Return). - Sind die Rechte korrekt?
Der User muß stimmen (vorallem wenn suExec genutzt wird) und das Script muss Ausführrechte haben. (<code>chmod 755 script.plcode>) - Ist der Interpreterpfad korrekt gesetzt?
Stimmt der Pfad in der Shebang-Zeile? Perl liegt z.B. unter <code>/usr/bin/perlcode>. - Hat das Script Syntax-Fehler?
<code>perl -c script.plcode> (bzw. <code>php -l script.phpcode>) liefert entsprechende Fehlermeldungen oder eben:
<code>script.pl syntax OKcode> - Läßt sich das Programm starten?
Mit <code>./script.plcode> testet man dann, ob es
a) korrekt aufgerufen werden kann und
b) HTML-Code mit mind. einem HTTP-Header liefert.
Schlägt a) schon fehl, hat man die Punkte 1 bis 3 übersprungen!
<code>Content-type: text/htmlcode> gefolgt von einer leeren Zeile sollte i.d.R. der HTTP-Header sein.