Johann Pluskal: Xitami Webserver + CGI Probleme

Hallo Leute

Wer kann mir bitte bei meinen Problem folgender Art helfen:

Habe den Xitami Webserver installiert. Alles funktioniert wunderbar bis
auf die CGI Schnittstelle.

Wenn ich ein PerlScript starten moechte dann zwei moegliche Fehler:

  1. PerlScript wird im Browser angezeigt
  2. Browser will das PerlScript downloaden.

Wer kann helfen ??

Ich bedanke mich im voraus fuer eure Antworten....

mfg Pluskal

  1. Wenn ich ein PerlScript starten moechte dann zwei moegliche Fehler:

    1. PerlScript wird im Browser angezeigt
    2. Browser will das PerlScript downloaden.

    Wer kann helfen ??

    Hallo Johann!

    Ich habe bei mir zu Hause auch den Xitami laufen. Das obige Phänomen
    tritt bei mir dann auf, wenn in den (PerlOderWasAuchImmer-) Skripten
    eine Kommentarzeile mit der Angabe des Interpreters fehlt.
    Versuch mal, in die allererste Zeile Deiner Skripte folgendes hineinzuschreiben:

    #!perl

    Falls dies nicht funktioniert, versuche, den Perl-Interpreter mit in PATH aufzunehmen,
    oder - was allerdings eher nervt - den kompletten Pfad anzugeben, also

    #!c:\bin\perl.exe

    oder so ähnlich (Bei mir geht es ohne Pfadangabe).

    Ansonsten muß man darauf achten, daß

    • die Dateiendung *.pl unter Windows mit dem Perl-Interpreter asoziiert ist,
    • die Skripte in einem cgi-Verzeichnis stehen.

    Viele Grüße

    Andreas Bierhals

    1. hi!

      Falls dies nicht funktioniert, versuche, den Perl-Interpreter mit in PATH aufzunehmen,
      oder - was allerdings eher nervt - den kompletten Pfad anzugeben, also
      #!c:\bin\perl.exe

      Perl für Win32 beachtet die Angabe des Pfades in dieser Zeile nicht, sondern nur die Parameter, die dort angegeben werden.

      Ansonsten muß man darauf achten, daß

      • die Dateiendung *.pl unter Windows mit dem Perl-Interpreter asoziiert ist,

      Na, da wäre ich mir nicht so sicher. Manche Server haben bereits einen internen Perl-Interpreter.

      • die Skripte in einem cgi-Verzeichnis stehen.

      Hängt vom Server ab.

      bye, Frank!

      1. Na, da wäre ich mir nicht so sicher. Manche Server haben bereits einen internen Perl-Interpreter.

        • die Skripte in einem cgi-Verzeichnis stehen.

        Hängt vom Server ab.

        Hallo Frank und Johann!

        Ich hab' nochmal im WWW geguckt: Eine genaue Anleitung für CGI's
        unter Xitami für Win95/NT findet sich in
        http://www.imatix.com/html/xitami/index5.htm.

        Demnach kommt es insbesondere auf die 1. Zeile  mit dem "#!..." in den Skripten an,
        die unter Win95/NT tatsächlich vom Server abgefragt wird (hab's selbst
        versucht - sobald man die Zeile wegläßt, will er das Skript zum Download
        zurückschicken).
        Der Xitami-Server hat ansonsten kein eingebautes Perl - dessen
        Komplettinstallation paßt dafür aber gezippt auf eine Diskette...

        Viele Grüße!
          
            Andreas Bierhals

        1. Hallo Frank und Johann!

          Hallo

          Ich hab' nochmal im WWW geguckt: Eine genaue Anleitung für CGI's
          unter Xitami für Win95/NT findet sich in
          http://www.imatix.com/html/xitami/index5.htm.

          Danke, aber diese HTML Seiten sind bereits beim Download von Xitami dabei.
          (Hab ich schon angeschaut)

          Demnach kommt es insbesondere auf die 1. Zeile  mit dem "#!..." in den Skripten an,

          Laut Beschreibung ja. Habe verschiedene Kombinationen probiert:
          #! d:\perl\bin\perl.exe   oder    #! d:\perl\bin   oder     #!d:\perl\bin\  ......
          Leider kein Erfolg.

          Die Scriptdateien mit der Endung pl sind mit dem Perl Interpreter asoziiert.
          (Scripte stehen im cgi-bin Verzeichnis)

          die unter Win95/NT tatsächlich vom Server abgefragt wird (hab's selbst
          versucht - sobald man die Zeile wegläßt, will er das Skript zum Download
          zurückschicken).

          Bei mir melden die Browser (MSIE,Netscape) das der >>Mime<< Typ unbekannt
          ist.  Vielleich liegt dort der Fehler ?

          Mich würde interesieren die Mime-Einstellung unter Windows für die pl Dateien.
          (Explorer-->Ansicht-->Optionen-->Dateitypen)

          Momentan habe ich bei mir text/html eingestellt. Das ergibt zumindest einen
          Teilerfolg beim MSIE (kein Download)

          Bin schon ganz kopflos...

          Ciao Pluskal

          1. hi!

            #! d:\perl\bin\perl.exe   oder    #! d:\perl\bin   oder     #!d:\perl\bin\  ......
            Leider kein Erfolg.

            Normalerweise ist diese Zeile unter Windows ohne Belang. Versuch es mal auf jeden Fall ohne das Leerzeichen nach # und mit / statt .

            Mich würde interesieren die Mime-Einstellung unter Windows für die pl Dateien.
            (Explorer-->Ansicht-->Optionen-->Dateitypen)

            Die MIME-Typen für den Webser lassen sich normalerweise auch im Webserver einstellen, nicht in den Optionen für Windows.

            Momentan habe ich bei mir text/html eingestellt. Das ergibt zumindest einen
            Teilerfolg beim MSIE (kein Download)

            text/html als MIME-Typ für Perl-Skripts? Sehr witzig. Der korrekte Typ ist application/x-perl.

            bye, Frank!

            1. hi!

              Ebenfalls hi

              Normalerweise ist diese Zeile unter Windows ohne Belang. Versuch es mal auf jeden Fall ohne das Leerzeichen nach # und mit / statt .

              Leider kein Erfolg.
              Bekomme nur folgende Fehlermeldung:

              Unknown File Type
              You have started to download a file of type */*
              Click "More Info.....

              text/html als MIME-Typ für Perl-Skripts? Sehr witzig. Der korrekte Typ ist application/x-perl.

              War halt ein Versuch. Habe aber bereits wieder umgestellt auf application/x-perl.

              bye, Frank!

              bye Pluskal

              1. Hi Leute

                Danke für eure Hilfe bzw den Tips.

                Meine CGI Schnittstelle funktioniert jetzt auf zwei Webservern.
                (Xitami und OmniHTTPd).      :-)   jetzt lacht er

                Hab zum Schluß bei jeden Server Mimetype application/x-perl angeben
                und mein Testscript nochmals bearbeitet.

                Naja jedenfalls jetzt gehts.

                Danke nochmals

                Gruss Pluskal

          2. Hallo!

            Ich hab's gerade nochmal an einem richtigen Perl-Skript getestet:
            Es reicht für Xitami definitiv aus, in die 1. Zeile

            #!perl

            zu schreiben (ohne Pfad, ohne Leerzeichen).
            Die Dateiendung der Skripte ist egal, ich konnte die Datei
            z.B. von *.pl auf *.blupp umbenennen, und es funktionierte trotzdem.
            Damit ist auch die Windows-Assoziation der Dateiendung vom Tisch
            (womit ich auch wieder mal was dazugelernt habe<g>).

            Wichtig ist nur, daß das perl-Programm im Suchpfad steht
            (muß bereits in Autoexec.bat in PATH geschrieben werden!).
            Mit anderen Worten, man muß z.B. aus einer DOS-Box jederzeit
            "perl" aufrufen können, dann kann auch der Server perl finden.

            Andere Frage, welche Xitami-Version benutzt Du eigentlich?

            Viel Erfolg und Viele Grüße!

            Andreas

            1. Hallo!

              Hallo

              Ich hab's gerade nochmal an einem richtigen Perl-Skript getestet:
              Es reicht für Xitami definitiv aus, in die 1. Zeile
              #!perl
              zu schreiben (ohne Pfad, ohne Leerzeichen).

              »»  Die Dateiendung der Skripte ist egal, ich konnte die Datei

              z.B. von *.pl auf *.blupp umbenennen, und es funktionierte trotzdem.
              Damit ist auch die Windows-Assoziation der Dateiendung vom Tisch
              (womit ich auch wieder mal was dazugelernt habe<g>).

              Wenns nur bei mir so wäre...    :-)

              Wichtig ist nur, daß das perl-Programm im Suchpfad steht
              (muß bereits in Autoexec.bat in PATH geschrieben werden!).
              Mit anderen Worten, man muß z.B. aus einer DOS-Box jederzeit
              "perl" aufrufen können, dann kann auch der Server perl finden.

              Bei der Installation des Perl-Interpreters wurde der PATH in die
              autoexec.bat eingetragen.

              Das heisst, wenn ich die DOS Box öffne kann ich unter jeden Verzeichnis
              Perl aufrufen. Z.B unter c:\windows (Perl ist bei mir in Laufwerk D installiert)

              Ich glaube zu 99,3 % das ich den Perl-Interpreter richtig installiert.

              Am besten wird sein alles neu installieren oder anderen Server verwenden.
              (z.B OmniHTTPd)

              Andere Frage, welche Xitami-Version benutzt Du eigentlich?

              Version 2.4b

              Viel Erfolg und Viele Grüße!

              Danke

              Tschüss Pluskal

  2. Hallo Johann,

    Wenn ich ein PerlScript starten moechte dann zwei moegliche Fehler:

    1. PerlScript wird im Browser angezeigt
    2. Browser will das PerlScript downloaden.

    So funktioniert's bei mir unter Win95 definitiv:

    1. in jedem Perl-Script in der ersten Zeile:
    #!/www/perl/bin/perl.exe
    (ist der Pfad zum Perl-Interpreter. Interpreter und Scripts liegen auf dem gleichen Laufwerk)

    2. Perl-Script im cgi-local-Verzeichnis von Xitami ablegen, am besten mit der Dateiendung *.pl

    3. Relevante Einstellungen in der Datei xitami.cfg (sind eigentlich auch die Defaults):
    [Server]
      cgi-url=/cgi-bin
    [CGI]
        workdir=cgi-bin
        dirlist=0
        debug=0
        http-fields=1
        http-prefix=HTTP_
        form-fields=1
        form-prefix=FORM_
        form-query=0
        environment=1
        errlog=cgierr.log
        full-name=1
        exit-ok=0
        mixed-url=1
        timeout=60
        monitor=200
        msdos-style=0
        stdio=1

    4. Script aufrufen mit http://127.0.0.1/cgi-bin/script.pl

    viele Gruesse
      Stefan Muenz

    1. Hallo Johann,

      Hallo

      So funktioniert's bei mir unter Win95 definitiv:

      Schön bei mir leider noch immer nicht.

      1. in jedem Perl-Script in der ersten Zeile:
        #!/www/perl/bin/perl.exe
        (ist der Pfad zum Perl-Interpreter. Interpreter und Scripts liegen auf dem gleichen Laufwerk)

      Mein Testscript letzte Version:

      #!D:/perl/bin/perl.exe
      print "Content-type: text/html\n";
      print "<html><head><title>Plusi CGI</title></head>";
      print "<body>";
      print "<h1>Test gelungen</h1>";
      print "</body></html>";

      Interpreter und Server liegen auf dem selben Laufwerk. (D)
      Perlinterpreter ist mit pl Dateien asoziiert.

      1. Perl-Script im cgi-local-Verzeichnis von Xitami ablegen, am besten mit der Dateiendung *.pl

      Script liegt im cgi-bin Verzeichnis. Dateiendung ist pl.

      1. Relevante Einstellungen in der Datei xitami.cfg (sind eigentlich auch die Defaults):

      Meine Einstellungen in dieser Datei sind:

      cgi-url=/cgi-bin                    #   What defines a CGI URL?
      cgi-bin=cgi-bin

      [Win32]
          16bit-cgi=1                         #   Support 16-bit CGIs?
          secure=0                            #   Secure control panel?
          service-name=Xitami                 #   WinNT service name
          service-text=Xitami Web Server      #   WinNT service description

      [CGI]
          enabled=1                           #   CGI programs enabled?
          workdir=cgi-bin                     #   Where CGI scripts run
          wildcard=0                          #   Allow /cgi-bin anywhere in URL
          dirlist=0                           #   Allow directory listings
          debug=0                             #   Keep input and output files
          http-fields=1                       #   Add HTTP_ header fields?
          http-prefix=HTTP_                   #   If so, what prefix?
          form-fields=1                       #   Add form fields to environment?
          form-prefix=FORM_                   #   If so, what prefix?
          form-query=0                        #   Pass form fields as QUERY_STRING?
          environment=1                       #   CGI gets server environment?
          errlog=cgierr.log                   #   CGI stderr output
          full-name=1                         #   Format SCRIPT_NAME with full path?
          exit-ok=0                           #   Do we want an Ok exit code?
          mixed-url=1                         #   Non-CGI files allowed?
          timeout=60                          #   Timeout (seconds) for CGIs
          monitor=200                         #   Monitor rate, milliseconds
          msdos-style=0                       #   Use backslash in pathnames
          stdio=1                             #   Use standard CGI input/output

      [CGI-Environment]
                                              #   name=value
      [CGI-Alias]
      #   demos=f:\html\demos                 #   eg. http://xxxx/demos/someprog

      * * * und das sind meine Schweissperln auf meiner Stirn :-)

      Ich erhalte von jeden immer folgende Meldung. Mime Unbekannt bzw Datei downloaden....
      grrr....

      viele Gruesse

      Ebenfalls viel Gruesse

      Pluskal

      1. hi!

        Mein Testscript letzte Version:

        #!D:/perl/bin/perl.exe
        print "Content-type: text/html\n";

        Hier fehlt ein \n:
          print "Content-type: text/html\n\n";

        print "<html><head><title>Plusi CGI</title></head>";
        print "<body>";
        print "<h1>Test gelungen</h1>";
        print "</body></html>";

        bye, Frank!