Matze: CGI-Response wird nicht angezeigt.

Hi!

Ich habe ein C++-Programm (Start.exe) geschrieben, das ueber action="Start.exe" einer FORM im HTML Dok gestartet wird. Dieses .exe startet ein CGI-Script und wertet schliesslich dessen Response aus sprich - formuliert die Response um.

Bsp.: Das CGI-Skript gibt "1 record" zurueck und das Start.exe macht daraus:

content-type text/html

Sie haben einen Datensatz hinzugefuegt

Prob.: Starte ich das Start.exe ueber die Kommandozeile, funktioniert es, starte ich es ueber Browser kommt nur ein leerer Bildschirm zurueck.

Wer kennt sich mit sowas aus ?

mfg... MAtze

  1. Prob.: Starte ich das Start.exe ueber die Kommandozeile, funktioniert es, starte ich es ueber Browser kommt nur ein leerer Bildschirm zurueck.

    Verstehe ich dies richtig, dass Du die exe im Browser ausführen willst?

    Gruß Jan

    1. Verstehe ich dies richtig, dass Du die exe im Browser ausführen willst?

      Nein. Die exe wird ueber die action einer FORM ausgefuehrt und startet wiederum ein CGI-Skript. Die Antwort des CGI-Skripts, die mittels der .exe konvertiert wird, soll im Browser angezeigt werden.

      Matze

      1. Hi,

        Die exe wird ueber die action einer FORM ausgefuehrt und startet wiederum ein CGI-Skript.

        die .exe führt also einen HTTP-Request zu einem CGI-Script durch? Oder ruft sie einfach nur ein z.B. Perl-Script auf? Dann prüfe doch mal, ob diese eigentlich gefunden wird. Wenn die .exe nämlich im CGI-Kontext aufgerufen wird - was hier der Fall ist[1] - ist das aktuelle Verzeichnis unbekannt.

        Cheatah

        [1] Wenn nicht, solltest Du Dich erst mal um Deine Serverkonfiguration kümmern. Wirf übrigens auch mal einen Blick ins Error-Log, das ist nie verkehrt.

        1. Hi,

          Die exe wird ueber die action einer FORM ausgefuehrt und startet wiederum ein CGI-Skript.

          die .exe führt also einen HTTP-Request zu einem CGI-Script durch? Oder ruft sie einfach nur ein z.B. Perl-Script auf? Dann prüfe doch mal, ob diese eigentlich gefunden wird. Wenn die .exe nämlich im CGI-Kontext aufgerufen wird - was hier der Fall ist[1] - ist das aktuelle Verzeichnis unbekannt.

          Cheatah

          [1] Wenn nicht, solltest Du Dich erst mal um Deine Serverkonfiguration kümmern. Wirf übrigens auch mal einen Blick ins Error-Log, das ist nie verkehrt.

          1. HI Cheatah, sorry fuer die erste antwort (die Nerven... die Nerven)

            das Problem liegt wohl bei meinem C++ Code.

            Auszug:

            if( (ReadFile(hChildStdoutRd, chBuf, BUFSIZE, &dwRead, NULL) != TRUE) (dwRead == 0) )

            Dieser Lesevorgang wird nun gestartet wenn ich die EXE normal ausfuehre. Ueber actin = "Start.exe" funktioniert es nicht, da &dwread auf null steht.

            Weisst du woran das ligen koennte ?

            Matze

            1. Hi,

              if( (ReadFile(hChildStdoutRd, chBuf, BUFSIZE, &dwRead, NULL) != TRUE) (dwRead == 0) )

              Dieser Lesevorgang wird nun gestartet wenn ich die EXE normal ausfuehre. Ueber actin = "Start.exe" funktioniert es nicht, da &dwread auf null steht.

              Weisst du woran das ligen koennte ?

              sorry, ich kann kein C++. Was ist &dwRead? Inwieweit hat dwRead damit zu tun (falls)?

              Wenn ReadFile das macht, was ich vermute ;-) solltest Du wirklich überprüfen, ob die Datei gefunden wird. Das ist im CGI-Kontext ggf. anders als von der Kommandozeile.

              Cheatah

              1. Hi!

                Kann es denn nicht einfach auch sein, dass man exe-files am Server gar nicht ausführen kann (=darf)?

                if( (ReadFile(hChildStdoutRd, chBuf, BUFSIZE, &dwRead, NULL) != TRUE) (dwRead == 0) )

                Dieser Lesevorgang wird nun gestartet wenn ich die EXE normal ausfuehre. Ueber actin = "Start.exe" funktioniert es nicht, da &dwread auf null steht.

                Ist ReadFile eine Funktion von dir? Kenne nämlich keine solche! Ausserdem haben NULL bzw ==0 doch immer irgendwas mit Fehlern zu tun. Auf den ersten blick könnte man glauben dwRead wär' so ne Art Semaphore, die 0 ist, wenn man auf die Datei zugreifen kann, und 1 ist, wenn grad reingeschrieben wird?

                liebe Grüsse
                Bernhard

                PS: Wieso tust du dir das eigentlich an? Mit C++ ein file zu parsen, erfordert ungefähr genauso viel Fingerspitzengefühl wie mit einem Säbel eine Weintraube zu schälen ;-) In PERL wären das 3 Zeilen :-)

                1. Hi,

                  Kann es denn nicht einfach auch sein, dass man exe-files am Server gar nicht ausführen kann (=darf)?

                  im CGI-Kontext ist eigentlich alles erlaubt, was ausführbar ist, von STDIN liest, nach STDOUT printet und die Umgebungsvariablen ansprechen kann. Teilweise geht es sogar ohne. Ob "darf" hängt von Deinem Server und seiner Konfiguration ab.

                  if( (ReadFile(hChildStdoutRd, chBuf, BUFSIZE, &dwRead, NULL) != TRUE) (dwRead == 0) )

                  Ist ReadFile eine Funktion von dir?

                  Von mir? Nein, wieso?

                  Kenne nämlich keine solche! Ausserdem haben NULL bzw ==0 doch immer irgendwas mit Fehlern zu tun.

                  Würde ich so nicht sagen. 0 kann z.B. sehr gut die (richtige) Anzahl von Elementen sein, und NULL wird schon mal anstatt einer Fehlermeldung zurückgegeben, also eben nur dann, wenn alles richtig war. Selten allerdings, das gebe ich zu.

                  Cheatah

                  1. Hi!

                    im CGI-Kontext ist eigentlich alles erlaubt, was ausführbar ist, [...] Ob "darf" hängt von Deinem Server und seiner Konfiguration ab.

                    Eben, letzteres meinte ich. Wenn ich ein Provider wär', dann würde ich aufpassen, dass mir ja niemand ein exe-file auf meinen Server legt, könnte ja einiges anstellen.

                    Ist ReadFile eine Funktion von dir?
                    Von mir? Nein, wieso?

                    Ach Mensch, nicht von dir, von Matze natürlich, ich weiss ja dass du kein c++ kannst ;-)

                    Kenne nämlich keine solche! Ausserdem haben NULL bzw ==0 doch immer irgendwas mit Fehlern zu tun.

                    Würde ich so nicht sagen. 0 kann z.B. sehr gut die (richtige) Anzahl von Elementen sein, und NULL wird schon mal anstatt einer Fehlermeldung zurückgegeben, also eben nur dann, wenn alles richtig war. Selten allerdings, das gebe ich zu.

                    Na gut, aber ich denk mir, wenn er eine Datei aufmacht, und da NULL zurückkommt wird wohl nicht recht viel drinnen sein in der Datei ;-) Aber ich hab mal gehört, auf irgendeiner griechischen Insel soll Kopfschütteln "ja" und -nicken "nein" heissen *g*

                    Und jetzt bitte nicht sagen "NULL wird übergeben nicht zurückgegeben" - ich seh's .-)

                    Aber vielleicht klärt uns Matze ja noch auf!

                    liebe Grüsse
                      Bernhard

                    1. Hi,

                      Wenn ich ein Provider wär', dann würde ich aufpassen, dass mir ja niemand ein exe-file auf meinen Server legt, könnte ja einiges anstellen.

                      hm, mit einer .exe kann man auch nicht mehr Schaden anrichten als mit einer .pl.

                      Ist ReadFile eine Funktion von dir?
                      Von mir? Nein, wieso?

                      Ach Mensch, nicht von dir, von Matze natürlich, ich weiss ja dass du kein c++ kannst ;-)

                      Ich frage nur, weil Du zwar auf meinen Artikel geantwortet, aber Dich auf nichts von mir bezogen hast...

                      Würde ich so nicht sagen. 0 kann z.B. sehr gut die (richtige) Anzahl von Elementen sein, [...]

                      Na gut, aber ich denk mir, wenn er eine Datei aufmacht, und da NULL zurückkommt wird wohl nicht recht viel drinnen sein in der Datei ;-)

                      Okay, da magst Du recht haben :-)

                      Aber ich hab mal gehört, auf irgendeiner griechischen Insel soll Kopfschütteln "ja" und -nicken "nein" heissen *g*

                      Das hast Du verwechselt: "Nä" ist griechisch für "ja" ;-)

                      Cheatah

                      1. Hi cheatah!

                        hm, mit einer .exe kann man auch nicht mehr Schaden anrichten als mit einer .pl.

                        Auch irgendwie wahr, naja, was solls ...

                        Ich frage nur, weil Du zwar auf meinen Artikel geantwortet, aber Dich auf nichts von mir bezogen hast...

                        Das stimmt so nicht: Die exe-Geschichte auf dem Server wollte ich von dir wissen, daher habe ich auf deinen Beitrag geantwortet. Ich habe es zwar auch im Kontext anklingen lassen glaube ich, allerdings kopier ich hier sich nix aus meinem vorherigen Artikel rein, denn sonst kommt kerki wieder, und ich muss wieder bis auf die Hosen blamiert von Dannen ziehen :-(

                        Na gut, aber ich denk mir, wenn er eine Datei aufmacht, und da NULL zurückkommt wird wohl nicht recht viel drinnen sein in der Datei ;-)

                        Okay, da magst Du recht haben :-)  <====== !!!!!!!!!!

                        Wow, also das werd ich mir aufheben, dass du mal jemandem recht gibst, und dann ausgerechnet mir *g* also ich bin kräftigst gebauchpinselt (diesen Spruch habe ich mir von Michael Schröpl mal kurz ausgeliehen, sorry, aber ich find ihn voll toll) :-)))))

                        Das hast Du verwechselt: "Nä" ist griechisch für "ja" ;-)

                        1. Warum kannst du griechisch?
                        2. Das hat schon gepasst: unsere Englisch-Professorin erzählte uns, dass sie in Griechenland einmal einen Film entwickeln lassen wollte. Sie fragte die Kassiererin "Kann ich bei ihnen einen Film entickeln lassen", worauf die Griechin kräftig nickte. Naja, als sie dann so ein paar Minuzten lang dagestanden waren, hat sie sich entschlossen den Film zuhause entwickeln zu lassen ;-)

                        liebe Grüsse
                          Bernhard

                        1. Hi auch,

                          hm, mit einer .exe kann man auch nicht mehr Schaden anrichten als mit einer .pl.

                          Abgesehen vom s-Bit ...

                          bin kräftigst gebauchpinselt (diesen Spruch habe ich mir von Michael Schröpl mal kurz ausgeliehen

                          ... und ich von Lukas Kautzsch, und dessen Motto ist "besser gut geklaut als schlecht erfunden" ... ;-)))

                          mfG - Michael