bekomme CGI Scripte unter apache2/linux nicht zum laufen.

Django, Flask, Bottle, WSGI, CGI…
Antworten
BigRavler
User
Beiträge: 2
Registriert: Montag 2. Dezember 2013, 18:18

Guten Tag Zusammen,

Ich möchte ein kleines Webinterface mit CGI und Python realisieren, welches später für Development Zwecke die GPIO Ports eines Raspberry Pi ansprechen soll.
Ich bin blutiger Python Anfänger und hoffe die Frage ist nicht ganz dumm :roll:

Momentan kämpfe ich aber noch damit eine Hallo World Beispiel auf dem Pi nachzubauen.
Ich benutze Apache2 als Webserver mit folgendem HTML Code: Alles markieren

Code: Alles auswählen

<html>
<body>
<form action="cgi-bin/Test.cgi">
<p><input type="submit">
</body>
</html>
unter dem folgendem Pfad
/var/www/index.htm

das angesprochene Script sieht wie folgt aus:

Code: Alles auswählen

#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<h1>Hello World</h1>"
unter dem folgendem Pfad:
/usr/lib/cgi-bin/Test.cgi

Nach klick auf senden, wird mir im Browser ein 500 Internal Server Error angezeigt.
die Relevanten Zeilen in Apache Error Log sehen wie folgt aus:

Code: Alles auswählen

[Sat Nov 30 20:28:31 2013] [error] (2)No such file or directory: exec of '/usr/lib/cgi-bin/server_pizza.cgi' failed
[Sat Nov 30 20:28:31 2013] [error] [client 84.159.10.62] Premature end of script headers: server_pizza.cgi, referer: http://bbentertain.no-ip.biz/server_pizza.htm
leider werde ich auch nach stunden langen googlen nicht wirklich schlau daraus, ich hoffe jemand hat eine Idee.

Grüße B.Ravler
BlackJack

@BigRavler: Quelltext und Fehlermeldung passen offensichtlich nicht zusammen. Im HTML steht ``Test.cgi`` und in der Fehlermeldung steht ``server_pizza.cgi``. *Das* ist jetzt ein offensichtlicher Unterschied bei dem man sich denken kann was Du da *tatsächlich* stehen hast, aber nicht alles ist so offensichtlich und man kann sich bei solch verfälschten Angaben dann im schlechten Fall dumm und dusselig raten weil man das *tatsächliche* Problem überhaupt gar nicht gezeigt bekommt.

Die Fehlermeldung ist ja relativ eindeutig. Falls die Datei tatsächlich existiert würde ich mal schauen wie das mit den Zugriffsrechten und dem „executable bit” aussieht. Der Webserver muss natürlich zugreifen dürfen und die Datei muss als ausführbar markiert sein.

Sonstige Ideen: Vergiss CGI, zumindest die direkte Verwendung, und benutze mindestens eines der Mikrorahmenwerke wie Bottle oder Flask.
BigRavler
User
Beiträge: 2
Registriert: Montag 2. Dezember 2013, 18:18

Mein Ziel war es nicht die Fragestellung zu verfälschen sondern, das Beispiel einfach halten, da ich es zuerst 1:1 aus einem Tutorial nachgebaut habe und es dann soweit zurückgebaut habe das es ein Hello World Beispiel ist. Das mit der Berechtigung habe ich auch schon versucht mithilfe des chmod zu fixen, da bin ich dann wohl gescheitert.
Allerdings hat mir das Stichwort Bottle bzw. Flask hat mich schon gepackt, da werde ich mich gleich dran setzten.
Vielen Dank trotzdem.
Antworten