1.2k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Hi

Ich wollte etwas mit meinem xampp experimentieren, im Bereich CGIs. Da dachte ich mir, wenn der Sinn von CGIs doch der ist, Programme auszuführen mit Input/Output=Server, wieso sollte ich dann auf umständlichste Weise einen C++-Interpreter installieren, um dann aus meinem Programm "Skripte" zu machen?

Lange Rede kurzer Sinn: Habe ein Hallo Welt kompiliert und in cgi-bin gespeichert. Scheint sogar zu klappen, nur hat er wohl Probleme mit dem Header:
Fehlermeldung:
"Serverfehler!

Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
malformed header from script. Bad header=HTTP/1.1 200 OK: test.exe

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 500
localhost
26.02.2013 21:40:13
Apache/2.2.14 (Win32) SVN/1.5.6 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 DAV/2 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 "

Ok, etwas naiv, aber ich habe mit Live HTTP-header Addon für FF den Header vom Server abgefangen, den ein "test.php" auf meinem localhost sendet, und ihn dann mit cout nachgestellt ;) Anscheinend klappt das nicht so reibungslos wie gedacht.
Weiß jemand was hier genau der Fehler ist und wie man ihn zu beheben hat? Gibt es irgendwelche Interfaces mit Apache die man nutzen kann/soll?

Vielen Dank!
Grüße

4 Antworten

0 Punkte
Beantwortet von
hier mal ein paar weichenstellungen für dich:

httpd.apache.org/docs/2.2/howto/cgi.html
0 Punkte
Beantwortet von
Hi,
Vielen Dank!

Noch zwei kleine Verständnisfragen:
Wäre so ein C++-CGI schneller als ein php skript, oder langsamer weil der php-interpreter schon geladen ist und das c++-cgi immer wieder neu geladen werden muss?
Kann mit der Apache Dokumentation es irgendwie hinbekommen, ein Programm ähnlich dem PHP-Interpeter zu schreiben, dass "skripte" quasi selber ausführt? also so ein Intrperter in Eigenbau ;) Wären dass dann die ganzen Sachen der "mod_etc" vom Apache?

Grüße
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Ein Apache-Erweiterungsmodul kann viele verschiedene Funktionen haben, je nachdem an welcher Stelle in der Requestbehandlung es sich in den Apache-Prozess einklinkt. Neben Interpretern für gängige Skriptsprachen wie PHP, Perl oder Python gibt es auch Module für Authentifizierung, Bandbreitenbeschränkung, Forward- und Reverse Proxy, Filterung u.v.m.

Ein halbwegs aktueller Server sollte auch mit einer großen Anzahl an CGI-Prozessen keine Probleme haben, falls du wirklich noch mehr Performance benötigst, kannst du dein C++-Programm als FastCGI-Programm entwickeln - dabei bleibt das Programm selbst ständig aktiv und wartet auf einem Netzwerk- oder lokalen Socket auf Anfragen. Es fällt also der Overhead für das starten eines neuen Prozesses bei jeder Anfrage weg. Außerdem kann ein FastCGI-Programm unter einem anderen User- und Gruppenaccount laufen als der Webserver, was unter Umständen für mehr Sicherheit sorgen kann. "Normale" CGIs benötigen hierfür den suEXEC-Wrapper.
0 Punkte
Beantwortet von
Vielen Dank euch beiden :)
...