Ich versuche nach der Konfiguration meines Servers ein einfaches CGI-Skript auszuführen.
Mein Skript sieht so aus:
%Vor% Wenn ich zu meinen Skripten url http://127.0.0.1/~flybywire/cgi-bin/main.py
gehe, bekomme ich:
Interner Serverfehler
Der Server hat einen internen Fehler oder eine falsche Konfiguration festgestellt und konnte Ihre Anfrage nicht abschließen.
Und in error.log
bekomme ich folgendes:
[error] (8)Exec format error: exec of '/home/flybywire/www/cgi-bin/main.py' failed
[error] [client 127.0.0.1] Premature end of script headers: main.py
Weitere Informationen: Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 Server at 127.0.0.1 Port 80
Sie müssen möglicherweise ein #!/usr/bin/python
im oberen Bereich Ihres Skripts verwenden, um Apache mitzuteilen, dass es Python zur Ausführung verwenden soll. Zumindest habe ich das gemacht und es hat für mich funktioniert :-).
Speichern Sie die Datei (wenn dies ein Linux-Server ist) mit Unix-Zeilenenden. Du hast es mit chmod +x
ausführbar gemacht, oder?
Sie können #!/usr/bin/env python
verwenden, um die aktuell laufende Python-Version abzudecken, wenn Sie in verschiedenen Umgebungen arbeiten (daher der env
-Teil).
Es sieht so aus, als hätte Apache Schwierigkeiten, es auszuführen. Normalerweise müssen Sie für ein Unix-Skript den Interpreter am Anfang des Skripts angeben.
Versuchen Sie, dies oben hinzuzufügen:
%Vor%Vielleicht ist Ihr Problem, dass die neue Python-Version Klammern () benötigt.
Also dein:
%Vor%Jetzt sollte es sein:
%Vor%Entfernen Sie die zweite Zeile in Ihrem Programm (drucken) Ich habe es auf meinem Apache-Server (Mac OS X) versucht es funktioniert gut. Vergessen Sie nicht, chmod 755 und Neustart mit sudo apachectl Neustart Dies ist für Python 2.7
%Vor%