Norbert: welche Schraube muss ich drehen

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. Moin!

            AddHandler cgi-script   .cgi .pl
            AddHandler vb6-programm .exe

            So gehts:
            AddHandler cgi-script   .cgi .pl .exe

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
            1. 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

              1. 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®

                --
                Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                1. Moin!

                  Ach so. Gibt es das irgendwo zu bewundern?

                  MFFG (Mit freundlich- friedfertigem Grinsen)

                  fastix®

                  --
                  Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                  1. 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

              2. 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

                1. 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

                  1. 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®

                    --
                    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                    1. 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