welche Schraube muss ich drehen
Norbert
- webserver
Hallo,
habe mit VB6 ein Programm(exe) geschrieben, dass sich wie ein PHP-Script verhaelt.
Wenn ich es ins /cgi-bin/-Verzeichnis vom Apache lege, kann ich es mit dem Browser aufrufen und die Ausgabe ansehen.
Nun moechte ich, dass es serverweit funktioniert, genau so wie auch andere Scripte ueberall liegen koennen.
Leider habe ich keine Vorstellung davon, was dazu an der httpd.conf geaendert werden muss.
Waere super, wenn dazu jemand einen Tip hat ...
Gruss und Dank
Norbert
Hallo,
Moin!
habe mit VB6 ein Programm(exe) geschrieben, dass sich wie ein PHP-Script verhaelt.
? Eine exe braucht doch keinen Interpreter, oder in VB schon? ;-)
Wenn ich es ins /cgi-bin/-Verzeichnis vom Apache lege, kann ich es mit dem Browser aufrufen und die Ausgabe ansehen.
OK, funktioniert
Nun moechte ich, dass es serverweit funktioniert, genau so wie auch andere Scripte ueberall liegen koennen.
Das ist ein wenig komplizierter, als PHP DOCUMENT_ROOT weit einzustellen: In der Verzeichnis-Konfiguration (entweder in der httpd.conf oder in einer lokalen .htaccess) muss die Option ExecCGI eingeschaltet werden:
<Directoy /pfad/dort/hin>
...
Options +ExecCGI
</Directory>
Anschließend musst du dem Webserver noch mitteilen, dass er *.exe als CGI-Anwendung behandeln soll, schau am besten mal in der httpd.conf nach .cgi
Gruss und Dank
Norbert
Keine Ursache,
Robert
Hallo Robert,
... In der Verzeichnis-Konfiguration muss ...
ExecCGI eingeschaltet werden:
ist erledigt
Anschließend musst du dem Webserver noch mitteilen,
dass er *.exe als CGI-Anwendung behandeln soll,
schau am besten mal in der httpd.conf nach .cgi
habe ich gemacht
Da gibt es Bloecke fuer alle Scriptarten,
z.B. fuer Perl:
ScriptAlias /perl5/ "C:/Programme/prog/perl50/bin/"
AddType application/x-httpd-cgi .cgi .pl
AddType application/x-httpd-cgi "/perl5/perl.exe"
AddHandler cgi-script .cgi .pl
Action cgi-script "/perl5/perl.exe"
Da eine VB6.exe, wie Du voellig richtig vermutest,
keinen Interpreter benoetigt, bin ich unsicher, was
ich schreiben muss.
Das liegt daran, dass ich fuer andere Scripte die
Zeilen nur kopiert und angepasst habe, ohne zu wissen,
was zu was gut ist ... <leider> ... :-(
Gruss und Dank
Norbert
Hallo Norbert,
Bitte schau doch mal in den Featureartikel von Christoph Schnauß, http://aktuell.de.selfhtml.org/artikel/server/apacheconf/index.htm.
Ja ich weiß, dass dort VB nicht erwähnt ist, aber wenn Du Dir den Abschnitt über serverseitige Techniken durchliest, genauer den Abschnitt Perl, noch genauer die letzten Absätze von http://aktuell.de.selfhtml.org/artikel/server/apacheconf/apconf15.htm#a3, dann sollte Dir klar werden, dass Du in der folgenden Zeile ansetzen solltest:
AddHandler cgi-script .cgi .pl
Da eine VB6.exe, wie Du voellig richtig vermutest,
keinen Interpreter benoetigt, bin ich unsicher, was
ich schreiben muss.
Das liegt daran, dass ich fuer andere Scripte die
Zeilen nur kopiert und angepasst habe, ohne zu wissen,
was zu was gut ist ... <leider> ... :-(
Besser spät lernen als nie :-)
Freundliche Grüsse,
Vinzenz
Hallo Norbert,
noch genauer die letzten Absätze von
http://aktuell.de.selfhtml.org/artikel/server/apacheconf/apconf15.htm#a3,
dann sollte Dir klar werden, dass Du in der folgenden Zeile ansetzen solltest:AddHandler cgi-script .cgi .pl
okay:
AddHandler vb6-programm .exe
bewirkt,
dass gar nix mehr geht ...
muss wohl die falsche Zeile gewesen sein ... :-((
Besser spät lernen als nie :-)
genau,
ein Lehrer der etwas weiss, waere dabei sehr hilfreich ... :-((
Meine EXE'en liefen auf IIS, PWS und OmniHTTPd problemlos.
Beim Indianer nur in /cgi-bin/ und zwar OHNE jeden Eingriff in die httpd.conf
Gruss und Dank
Norbert
Moin!
AddHandler cgi-script .cgi .pl
AddHandler vb6-programm .exe
So gehts:
AddHandler cgi-script .cgi .pl .exe
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo Fastix,
So gehts:
AddHandler cgi-script .cgi .pl .exe
jawoll,
aber warum ... <gruebel>
Mit dem Anzeigen der Ausgabe gibt es Probleme beim Opera.
Das Programm schickt alle notwendigen Header mit.
Opera aendert den Mime-Typ und die Dateiendung.
Dann geht ein Fenster mit Downloadoptionen auf ... :(
NS und IE zeigen den text/plain ordentlich an.
Gruss und Dank
Norbert
Moin!
Das Programm schickt alle notwendigen Header mit.
"Content-type: text/plain" ?
Du kannst auch:
"Content-type: text/html" schicken :)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Ach so. Gibt es das irgendwo zu bewundern?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo Fastix,
Ach so. Gibt es das irgendwo zu bewundern?
wie denn ...
Frueher hatte ich mal einen Webspace auf NT.
Auf dem war eine ganze Bastelecke mit VB.exe auch eine kleine Suchmaschine ...
Heute kenne ich keinen Provider der preisguenstig mit NT arbeitet, als Server einen Apache verwendet und selbstgeschmiedete EXE'n zulaesst.
Also geht das nur bei mir hier zu hause ...
Da gibt es Perl, PHP in mehreren Versionen und eben auch VB- un C-Programme.
Wenn mich die Langeweile weiter quaelt koennte ich mich eventuell noch fuer Haskell erwaermen.
Ist aber ein doller Spielkram ... ;-)
Gruss Norbert
Hallo Norbert,
So gehts:
AddHandler cgi-script .cgi .pl .exe
jawoll,
Prima!
Mit dem Anzeigen der Ausgabe gibt es Probleme beim Opera.
Das Programm schickt alle notwendigen Header mit.
Ich verstehe Dich doch richtig. Die Ausgabe Deines Programms beginnt mit einer Zeile mit dem Inhalt
Content-Type: text/plain
gefolgt von einer Leerzeile.
Auf diese Leerzeile folgt der generierte Inhalt.
Opera aendert den Mime-Typ und die Dateiendung.
Dann geht ein Fenster mit Downloadoptionen auf ... :(
NS und IE zeigen den text/plain ordentlich an.
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
So gehts:
AddHandler cgi-script .cgi .pl .exe
jawoll,
Prima!
wieso - ich weiss doch gar nicht wieso es geht ... :-((
IMHO muesste der Apache eine Zeile dieser Art generieren:
C:/perl5/perl.exe D:/_home/htdocs/receiver.exe
Was aber totaler Bloedfug ist ... <gruebel>
Das Programm schickt alle notwendigen Header mit.
Ich verstehe Dich doch richtig. Die Ausgabe Deines Programms ... f.f.
im Prinzip JA - aber:
es ist nicht nur eine Zeile:
Content-Disposition: filename=ausgabe.txt
Content-Type: text/plain; charset=ISO-8859-1
Transfer-Encoding: not chunked
Content-Length: 1753
VB6-CGI-Programm ... usw. usf. ...
Es gibt noch ein Perl- und ein PHP-Script welches genau das Gleiche tun.
Bei denen arbeitet auch der Opera einwandfrei.
Bei der VB6.exe macht der Opera aus
text/plain - application/x-msdownload
und aus
ausgabe.txt - ausgabe.exe
Die Extension .exe bringt ihn sicher total aus dem Takt ... ;-)
Gruss Norbert
Moin!
Hallo Vinzenz,
So gehts:
AddHandler cgi-script .cgi .pl .exe
jawoll,
Prima!
wieso - ich weiss doch gar nicht wieso es geht ... :-((
Das ist eigentlich einfach.
AddHandler cgi-script :
Der Server übergibt die Datei zwecks Ausführung an das Betriebssystem und nimmt die Rückgaben im entgegen. Das ist sozusagen genau so, wie wenn das Programm an der Eingabeaufforderung getartet wird.
IMHO muesste der Apache eine Zeile dieser Art generieren:
C:/perl5/perl.exe D:/_home/htdocs/receiver.exe
Nö. Der mach sowas: D:/_home/htdocs/receiver.exe > zu_mir :)
Das Programm schickt alle notwendigen Header mit.
Ich verstehe Dich doch richtig. Die Ausgabe Deines Programms ... f.f.
im Prinzip JA - aber:
es ist nicht nur eine Zeile:Content-Disposition: filename=ausgabe.txt
Content-Type: text/plain; charset=ISO-8859-1
Transfer-Encoding: not chunked
Content-Length: 1753
Eigentlich müsste allein die zweite Zeile reichen:
Content-type: text/plain; charset=ISO-8859-1
Danach eine Leerzeile, möglichst nur durch einen Zeilenvorschub (\n) getrennt.
Ich fand das type immer klein geschrieben und habe nicht in Erinnerung, ob ich da mit groß/klein (womöglich versehentlich) experimentiert habe.
Die Extension .exe bringt ihn sicher total aus dem Takt ... ;-)
Eventuell der Cache des Opera? Hast Du vielleicht mal den Opera auch benutzt, als Du in der http.conf den cgi-script- Eintrag noch nicht hattest?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo fastix,
IMHO muesste der Apache eine Zeile dieser Art generieren:
C:/perl5/perl.exe D:/_home/htdocs/receiver.exe
Nö. Der mach sowas: D:/_home/htdocs/receiver.exe > zu_mir :)
schon,
aber bei den anderen Endungen in der Zeile wird ja auch der Perl-Interpreter aktiviert.
Fuer die PHP-Scripte gibt es ja auch eigene Zeilen und Interpreter.
Eigentlich müsste allein die zweite Zeile reichen:
Content-type: text/plain; charset=ISO-8859-1
Danach eine Leerzeile, möglichst nur durch einen Zeilenvorschub (\n) getrennt.
da muss ich mal etwas korrigieren:
Laut RFC soll immer (\r\n) verwendet werden.
Viele, vor allem Unixer, halten sich jedoch nicht daran.
Die anderen Zeilen sind historisch gewachsen ...
Da der Apache jetzt ueberal chunkt, muss man es ihm explizit verbieten.
Die Auswerteprogramme koennen mit den Zahlen nix anfangen.
Da der IE Probleme hat text/plain anzuzeigen,
sind andere auf die Idee mit 'Filename:ausgabe.txt'
gekommen, hat funktioniert, bleibts.
Nur Content-Length ist wirklich ueberfluessig ... ;-)
Gruss und Dank
Norbert