Webserver: CGI Skripte (.cgi und .pl) werden nicht ausgeführt
Betrifft:
alle dedizierten Systeme mit Confixx Webinterface und alle V-Server mit Confixx und Apache Webserver 2.0
(auf Plesk-Systeme treffen die generischen Informationen ebenfalls zu)
Problem:
CGI-Skripte auf meinem System werden nicht ausgeführt. Ich erhalte eine Fehlermeldung (z.B. 500 Internal Server Error) oder bekomme die Datei zum Download angeboten, wenn ich sie aufrufe.
Mögliche Ursachen und Lösungen:
1.: Richtiges CGI-Verzeichnis
Standardmäßig werden CGI-Skripte nur verarbeitet, wenn sie im Verzeichnis /cgi-bin/ liegen, welches von der Confixx-Software unter dem Ordner /html/ automatisch erstellt wird.
Außerhalb dieses Verzeichnisses werden CGI-Skripte nur ausgeführt, wenn Sie dies in Confixx (als Endkunde!) speziell freigeben. Diese Freigabe liegt etwas versteckt in der Übersicht unter "Allgemein" beim Endkunden, der Punkt lautet
CGI/Perl außerhalb cgi-bin | Deaktiviert ändern
Deaktiviert ist die Voreinstellung.
2.: CGI außerhalb /cgi-bin/ und es klappt trotzdem nicht!
Überprüfen Sie, ob in der Datei /etc/apache2/mod_mime-defaults.conf der folgende Eintrag existiert:
AddHandler cgi-script cgi pl pm
Existiert diese Eintrag nicht, so fügen Sie ihn am Ende der Datei ein. Benutzen Sie zur Bearbeitung von Linux-Textdateien aber niemals einen Windows-Editor, sondern einen Linux-Editor wie z.B. joe oder mcedit! (mcedit ist der integrierte Editor aus dem Midnight Commander (Norton Commander Clone), welcher mit mc aufgerufen wird)
Nach einer Änderung an der Datei müssen Sie den Apache Webserver neu starten:
/etc/init.d/apache2 stop && /etc/init.d/apache2 start
3.: Richtige Rechte gesetzt?
CGI-Skripte dürfen Sie in Sachen Benutzer und Gruppe nach dem FTP-Upload NICHT verändert werden, d.h. es bleibt bei Besitzer = webXX und Gruppe entweder auch = webXX oder Gruppe = ftponly (das hängt vom System ab).
Wichtig ist jedoch, daß Sie die Ausführungsrechte aktivieren, und zwar müssen CGI-Skript (.cgi und .pl) auf chmod 0755 gestellt werden. Stellen Sie die Rechte aber NICHT (wie von manchen Skripten in der Dokumentation gefordert) auf 777 - so bekommen Sie ganz gewiss Probleme mit 500 Internal Server Error.
4.: suexec2
Mit dem suexec2 Sicherheitsmechanismus wird überprüft, ob ein CGI-Skript ausgeführt werden darf oder nicht. Dazu müssen nicht nur die Berechtigungen stimmen, sondern auch der in suexec2 fest einkompilierte Pfad.
Rufen Sie auf der SSH root Shell
suexec2 -V
aus.
Unter Debian müssen Sie folgenden Befehl verwenden:
/usr/lib/apache2/suexec -V
Es sollte u.a. folgende Ausgabe erscheinen:
-D AP_DOC_ROOT="/home/www"
Erscheint stattdessen ein anderes Verzeichnis, z.B. /srv/www/htdocs, so haben Sie wahrscheinlich über ein SuSE Online Update ein Apache Update installiert, welches die suexec2 durch eine von SuSE vorgegebene ersetzt hat.
Korrekturmaßnahme:
Geben Sie folgende Befehle auf der SSH root Shell ein:
cd /usr/sbin
ls -la suexec*
Bekommen Sie nur die Datei suexec2 angezeigt, so müssen Sie sich eine korrekte Datei besorgen und einspielen, dazu unten mehr. Finden Sie jedoch neben der suexec2 noch eine suexec2.correct, so genügt folgender Befehl, um das Problem zu lösen:
cp -pv suexec2.correct suexec2
Unter Debian führen Sie die Korrektur folgendermaßen durch:
cd /usr/lib/apache2/
wget
http://download.fastit.net/software/suexec-Debian.correct -O suexec
chmod 4755 suexec
Danach sollte suexec2 -V wieder den richtigen Pfad ausgeben (unter Debian: /usr/lib/apache2/suexec -V).
Nach einer Änderung an der Datei müssen Sie den Apache Webserver neu starten:
/etc/init.d/apache2 stop && /etc/init.d/apache2 start
Download der korrekten Datei:
(wenn Sie keine suexec2.correct besitzen)
Haben Sie keine suexec2.correct vorgefunden, die den Pfad /home/www ausweist, so können Sie sich eine solche Datei bei uns downloaden und installieren. Geben Sie dazu ein:
wget
http://download.fastit.net/software/suexec2.correct
chmod 4755 suexec2.correct
cp -pv suexec2.correct suexec2
Auch hiernach muss der Apache2 Webserver wie oben beschrieben neu gestartet werden.
5.: Ich habe immer noch Probleme!
Wenn Sie weiterhin Probleme mit CGI-Skripten haben, obwohl Sie ALLE Hinweise in diesem Artikel beachtet und überprüft haben, so eröffnen Sie bitte ein Support-Ticket. Bitte beachten Sie jedoch, daß wir nicht bei spezifischen Problemen helfen können, d.h. wenn ein Skript funktioniert und ein anderes nicht, so liegt es vermutlich am Skript und unsere Hilfsmöglichkeiten sind sehr begrenzt. (Skript-Debugging ist NICHT in unserem Standardsupport enthalten!)
Letzte Änderung: 21.03.2005 12:17:13