Sand im Getriebe: 'Premature end of script headers'

Bash, Shell, PHP, Python, Perl, CGI
onekilometer
Posts: 5
Joined: 2003-03-18 19:41
Location: Köln

Sand im Getriebe: 'Premature end of script headers'

Post by onekilometer »

So, schön der Reihe nach:

Jetzt kämpfe ich noch ein wenig mit dem Linux Server im lokalen Netzwerk, damit ich später keinen Krampf mit dem 1&1 Server haben werde - hoffentlich.

Ich habe seit Tagen hier in meinem kleinen Palast Linux 8.0 laufen. Die Installation war einfach und auch Apache läuft schön. Schwierigkeiten machen mir aber die Scripte, wen wundert's. Um genau zu sein, ich konnte kein einiziges je ausführen.

Es kommt immer der Fehler:

(2)No such file or directory: exec of /usr/local/httpd/cgi-bin/gserverinfo.cgi
Premature end of script headers: /usr/local/httpd/cgi-bin/gserverinfo.cgi


Um Fehlerquellen zu minimieren habe ich nach der Installation des Betriebssystems kaum Ã?nderungen vorgenommen. Derzeit sind folgende Einstellungen in der httpd.conf gültig:

User wwwrun
Group httpd

(httpd habe ich mit YAST - shame on me! - angelegt. Dieser Gruppe gehört nur wwwrun und der user web1 an. Dieser wiederum ist der Besitzer des Verzeichnisses /usr/local/httpd und dessen Unterverzeichnisse.)

DocumentRoot "usr/local/httpd/htdocs"

ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"

<IfModule mod_perl.c>
# Provide two aliases to the same cgi-bin directory,
# to see the effects of the 2 different mod_perl modes.
# for Apache::Registry Mode
ScriptAlias /perl/ "/usr/local/httpd/cgi-bin/"
# for Apache::Perlrun Mode
ScriptAlias /cgi-perl/ "/usr/local/httpd/cgi-bin/"
</IfModule>
#
# "/usr/local/httpd/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/usr/local/httpd/cgi-bin">
Order allow,deny
Allow from all
</Directory>

</IfModule>
# End of aliases.


#
# set /cgi-bin for CGI execution
#
<Location /cgi-bin>
AllowOverride None
Options +ExecCGI -Includes
SetHandler cgi-script
</Location>

Dem Verzeichnis /usr/local/httpd/cgi-bin und der Datei gserverinfo.cgi habe ich natürlich über chmod 755 die entsprechenden Rechte gegeben. Besitzer und Gruppe von Verzeichnis und Script sind web1:httpd.

Soweit der Zustand. Nun gibt es ja in den FAQ dieses Forums genau für meine Fehlermeldung einen Hinweis http://www.rootforum.de/faq/index.php?s ... =006&id=61:

Mutig und froh bin ich also diesen kleinen Leitfaden durchgegangen:

1. Syntax - heißt es - sei OK
2. Aber es kommt die Meldung: 'bash: Bad Interpreter: File not found'.

Nochmals Check-Liste: Script wurde im ASCI-Modus auf den Server befördert und der Interpreterpfad von Perl '/usr/bin/perl' stimmt auch, sagt zumindest 'whereis perl'.

Mein Script beginnt mit:

#!/usr/bin/perl
###########################################################################################
# gserverinfo.cgi
# GEOs ServerInfo V. 1.11 - 01. April 2000


Ich weiß, das ist viel Lesearbeit hier. Aber mir will einfach nicht in den Kopf, was nicht stimmen könnte. Ich kann das Buch von Herrn Kabir fast auswändig, fiinde aber keine Lösung. Ich vermute aber, es könnte mit der Benutzer- und der Gruppen-Zuordnung (web1:httpd) zusammenhängen. Oder ist die Dokumentauszeichnung im Script nicht korrekt. Ich habe gelesen, dies nähme Apache sehr ernst, nur weiß ich nicht, was damit gemeint ist.

suEXEC habe ich für den Moment erst mal rausgeschmissen, damit es leichter wird, den Fehler zu finden.

Habt ihr eine Idee, wie ich bei der Fehlersuche systematisch vorgehen könnte. Zeit habe ich und Geduld eigentlich auch. Eigentlich gute Voraussetzungen, oder?
onekilometer
Posts: 5
Joined: 2003-03-18 19:41
Location: Köln

Jetzt geht's

Post by onekilometer »

Nun funktionieren meine Scripte. Kann der Fehler dieser gewesen sein:

Der in Linux angelegte User web1, dem das Script gehört, war auch Mitglied der Gruppe zu der der Apache-User wwwrun gehörte?