Thomas: XAMPP-CGI/Perl

Hallo liebes Forum!
Ich bin Neuling was Webserver angeht. Ich hab jetzt das Gesamtpaket von XAMPP heruntergeladen um darin lokal meine Perl-Scripts ausführen zu können.
Über
http://localhost
kann ich den Server problemlos aufrufen, aber mit
http://localhost/cgi-bin
gibt´s Probleme, genauergesagt einen Internal Server Error.
Unter Apache konnte ich so einen schonmal mit der Shebang-Zeile und dem Pfad zum Perl-Interpreter berichtigen.
Daran liegt es in diesem Fall aber definitiv nicht.
Woran dann???
Wäre super wenn mir jemand helfen könnte!!!
Gruß und Dank,
Thomas

  1. Hi,

    Internal Server Error.

    entwickle einen Pawlow'schen Reflex, der Dich bei einem Internal Server Error zunächst ins Error-Log sehen lässt. Bis dies geschehen ist sind andere Dinge, wie z.B. Vermutungen oder der Herzschlag, absolut irrelevant.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. ins Error-Log sehen

      Tut mir wahnsinnig leid, aber ich habe (noch) absolut keinen blassen Schimmer von der Materie.
      Es gibt jeweils einen Ordner Error und Log, aber was genau meinst du?
      Abgesehen davon glaube ich nicht, dass es daran liegt.
      Wie gesagt, unter apache hat die Angabe des korrekten Perl-Interpreter-Pfades das Problem behoben.
      Kannst du mir idiotensicher erklären, welche Gründe das (außer der mysteriösen Error-Log) haben kann?
      Danke und Gruß von
      Thomas

      1. Hi,

        ins Error-Log sehen
        Tut mir wahnsinnig leid, aber ich habe (noch) absolut keinen blassen Schimmer von der Materie.

        macht ja nichts.

        Es gibt jeweils einen Ordner Error und Log, aber was genau meinst du?

        Eine Datei, die i.d.R. error.log heißt und ein Logfile der Errors darstellt.

        Abgesehen davon glaube ich nicht, dass es daran liegt.

        Woran es liegt, steht da drin.

        Wie gesagt, unter apache hat die Angabe des korrekten Perl-Interpreter-Pfades das Problem behoben.

        Nicht raten, nachgucken.

        Kannst du mir idiotensicher erklären, welche Gründe das (außer der mysteriösen Error-Log) haben kann?

        Keine Ahnung. Ob ich das kann hängt davon ab, was in Deinem Error-Log steht.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,
          mir hilft nicht wirklich weiter, was im error.log steht, nämlich
          u. a. folgendes:

          Premature end of script headers: default.pl
          Can't locate strict.pm in @INC (@INC contains: .) at C:/Programme/xampp/cgi-bin/default.pl line 3.\r
          BEGIN failed--compilation aborted at C:/Programme/xampp/cgi-bin/default.pl line 3.\r
          File does not exist: C:/Programme/xampp/htdocs/xampp/cgi-bin

          Anm.:Natürlich existiert dieser Ordner!!!
          Das steht da in genau dieser Reihenfolge. Ich verzweifel langsam, schließlich scheint hier kein anderer solch triviale Probleme zu haben.
          Bitte Hilfe!
          Gruß,
          Thomas

          1. Hi,

            mir hilft nicht wirklich weiter, was im error.log steht,

            na, immerhin hilft es, die Ursache einzugrenzen.

            Premature end of script headers: default.pl

            Dies heißt immer, dass die Script-Ausführung keinen vollständigen HTTP-Header ergeben hat.

            Can't locate strict.pm in @INC (@INC contains: .) at C:/Programme/xampp/cgi-bin/default.pl line 3.\r

            Na, da haben wir es doch: Es wird nur im aktuellen Verzeichnis nach Modulen gesucht. Hast Du seit der Installation von XAMPP den Rechner gebootet?

            Ich verzweifel langsam, schließlich scheint hier kein anderer solch triviale Probleme zu haben.

            Für die einen ist es trivial, für die anderen die längste Herausforderung der Welt.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hast Du seit der Installation von XAMPP den Rechner gebootet?

              Nein. Wieso?

              Für die einen ist es trivial, für die anderen die längste Herausforderung der Welt.

              Danke für die aufmunternden Worte.

              Was heißt
              es wird immer nur im aktuellen verzeichnis nach Modulen gesucht?

              Ich kann Perl noch nicht und wollte es sozusagen parallel lernen.
              Da die Server-Installation noch nicht geklappt hat, konnte ich auch noch keine Perl-Scripts ausführen. Perl nur "trocken" zu lernen macht auch keinen Sinn.

              Gruß Thomas

              1. Hi,

                Hast Du seit der Installation von XAMPP den Rechner gebootet?
                Nein. Wieso?

                weil insbesondere Windows neue Shell-Variablen erst dann zur Verfügung stellt, wie z.B. den Suchpfad für Perl.

                Was heißt
                es wird immer nur im aktuellen verzeichnis nach Modulen gesucht?

                "(@INC contains: .)" - "." ist das aktuelle Verzeichnis.

                Da die Server-Installation noch nicht geklappt hat, konnte ich auch noch keine Perl-Scripts ausführen. Perl nur "trocken" zu lernen macht auch keinen Sinn.

                Wieso nicht? Im Gegensatz zu z.B. PHP wurde Perl nicht für den Einsatz im Web konzipiert.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
              2. Hallo,

                Ich kann Perl noch nicht und wollte es sozusagen parallel lernen.
                Da die Server-Installation noch nicht geklappt hat, konnte ich auch noch keine Perl-Scripts ausführen. Perl nur "trocken" zu lernen macht auch keinen Sinn.

                Perl-Scripts haben auch nichts mit der Server-Installation zu tun. Ich finde es hingegen nicht sinnvoll, Perl-Scripts gleich mal über einen Server laufen zu lassen. Wozu auch? Wie willst du als Anfänger grundlegende Dinge erlernen, die in einer Serverumgebung gar nicht funktionieren, wie bspw. ein simples Einlesen eines Strings von der Kommandozeile.

                Markus.

                --
                http://www.apostrophitis.at
                Maschiene währe Standart Gallerie vorraus Packete Objeckte tollerant
                1. hallo *Markus,

                  Perl-Scripts haben auch nichts mit der Server-Installation zu tun.

                  Wirklich nicht? *ggg*

                  Ich finde es hingegen nicht sinnvoll, Perl-Scripts gleich mal über einen Server laufen zu lassen.

                  Da sind wir wohl absolut entgegengesetzter Ansicht.

                  Wie willst du als Anfänger grundlegende Dinge erlernen, die in einer Serverumgebung gar nicht funktionieren, wie bspw. ein simples Einlesen eines Strings von der Kommandozeile.

                  Genau _darum_ gehts ihm doch gar nicht. Perl ist nunmal durchaus geeignet, über CGI bestimmte Serverreaktionen hervorzurufen. Warum also soll man nicht damit beginnen, ehe man sich an die Frage wagt, was Perl alles auf der Kommandozeile (shell) für das installierte System tun kann? Das ist - im Gegensatz zu LINUX/UNIX - unter Windows sogar vernachlässigbar und verwirrt eher, da Windows Perl nicht zum Systembauen und Kompilieren von Systembastandteilen braucht. Linux-Systeme hingegen kommen ohne "Perl auf der Kommandozeile" gar nicht aus, Windows aber schon.

                  Grüße aus Berlin

                  Christoph S.

                  --
                  Visitenkarte
                  ss:| zu:) ls:& fo:) va:) sh:| rl:|
                  1. Hallo,

                    Warum also soll man nicht damit beginnen, ehe man sich an die Frage wagt, was Perl alles auf der Kommandozeile (shell) für das installierte System tun kann?

                    Darum geht es nicht. Im Grunde habe ich Thomas wahrscheinlich ohnehin falsch verstanden, da er schrieb, er sei ein "Server-Anfänger" und kein Perl-Neuling, wie ich auf die Schnelle las. Jedenfalls, wäre er ein Anfänger gewesen, hätte ich es für nicht sinnvoll gehalten, mit CGI-Scripts zu beginnen, wenn man die Sprache nicht beherrscht, aber das soll natürlich jeder für sich entscheiden.

                    Markus.

                    --
                    http://www.apostrophitis.at
                    Maschiene währe Standart Gallerie vorraus Packete Objeckte tollerant
                2. Hallo,

                  Perl-Scripts haben auch nichts mit der Server-Installation zu tun. Ich finde es hingegen nicht sinnvoll, Perl-Scripts gleich mal über einen Server laufen zu lassen.

                  Das denke ich nicht. Egal, wozu auch immer Perl letztendlich konzipiert wurde. Fakt ist, ich will damit nichts anderes als CGI-Scripts schreiben. Und dafür ist ein Server bekanntlich unausweichlich.

                  Wie dem auch sei, booten hat nix gebracht.

                  Gruß Thomas

  2. hallo Thomas,

    na sowas: ich war am Wochenende nicht vorhanden, bin grade fünf Minuten wieder online bzw. am Rechner (eigentlich nur, um mir das Finale von Terminator3 reinzuziehen), und dann stoße ich auf deine Frage ;-)

    Ich bin Neuling was Webserver angeht.

    Macht nichts, wie Cheatah dir in mindestens zwei zitierenswerten Bemerkungen bereitzs geraten hat (er ist übrigens heute in milder Stimmung, das solltest du nutzen)

    Ich hab jetzt das Gesamtpaket von XAMPP heruntergeladen um darin lokal meine Perl-Scripts ausführen zu können.

    Das ist möglicherweise der erste Fehler, den du begangen hast. XAMPP wird zwar von guten Leuten betreut und entwickelt, sber es enthält ganz einfach "zuviel" Software im Gesamtpaket. Und das betrifft insbesondere den Apache. In XAMPP ist bereits eine Eigenkompilation von Apache 2.2.0 enthalten, die man sich als "normaler user" aber von den Originalquellen noch nicht besorgen kann - und die man auch nicht unbedingt braucht.

    Mein Vorschlag: Besorge dir zunächst einen Apache 2.0.55 von http://mirrorspace.org/apache/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi und installiere ihn, dann besorgst du dir das aktuelle Perl für Windows von http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.7.815-MSWin32-x86-211909.msi. Das installierst du beides und wirfst dein XAMPP komplett weg.
    Danach hast du aber noch kein funktionierendes Perl über die CGI-Schnittstelle. Die Anleitung, wie du das machen kannst, findest du in meinem Artikel (auch wenn der für etwas ältere Versionen geschrieben wurde, gilt das, was da drinsteht, immer noch).

    mit http://localhost/cgi-bin gibt´s Probleme, genauergesagt einen Internal Server Error.

    Na klar gibts das. Weil du dieses Verzeichnis nicht direkt aufrufen darfst, was auch Sinn macht. Aber ein Aufruf von
       http://localhost/cgi-bin/script.pl
    sollte eigentlich eine Scriptausgabe zur Folge haben.

    Unter Apache konnte ich so einen schonmal mit der Shebang-Zeile und dem Pfad zum Perl-Interpreter berichtigen.

    Hm. Bißchen verdreht ausgedrückt, aber vermutlich hast du genau das Richtige gemacht. Die shebang ist unverzichtbar - es sei denn, du hättest in der Apache-Konfigurationsdatei für den (standardmäßig nicht vorhandenen) Befehl
      ScriptInterpreterSource
    den Wert "registry" eingetragen.

    Wäre super wenn mir jemand helfen könnte!

    Das können wir gewiß, und Cheatah hat dir aufgrund seiner heute außergewöhnlich milden Grundstimmung schon vieles gesagt. Du mußt dir nur klarmachen: was wir hier im Forum besonders gerne machen, besteht darin, daß wir dir den Weg zeigen, wie es geht - dir aber möglichst keine "fertige Lösung" liefern. Es ist kein Fehler, wenn jemand mit diesem ganzen Kram und Krempel überhaupt erst anfängt, folgerichtig auf die Nase fällt, und sich dann hier im Forum mit einer Nachfrage meldet. Das haben wir alle irgendwann mal durch.

    Can't locate strict.pm in @INC (@INC contains: .) at C:/Programme/xampp/cgi-bin/default.pl line 3

    Das ist eine ausgesprochen hilfreiche Mitteilung. Vermutlich hast du in Zeile 3 deines Scripts stehen:
      use strict;
    Das ist eine _gute_ Einstellung, die du beibehalten solltest. Wenn aber da nun gleich das dafür zuständige Modul nicht gefunden werden kann, ist deine XAMPP-Installation defekt. An _dieser_ Stelle stolpert in der Regel noch kein "Newbie", der sich zum erstenmal mit dem Gesamtkomplex Apache/CGI beschäftigt. Und hier wärs dann sinnvoll, wenn du mal so ungefähr die ersten zehn Zeilen deines Scripts mitposten wolltest. Das Forum kann dir durchaus helfen, in eventuell fehlerhaften Scripts die Stelle herauszufinden, an der es hakt. Das geht aber nur dann wirklich zuverlässig, wenn du nicht nur eine verbale Beschreibung lieferst, sondern wenigstens den relevanten Teil deines Scriptcodes angibst.

    Can't locate strict.pm [...] line 3.\r
    BEGIN failed--[...] line 3.\r

    Der Wortlaut solcher Fehlermeldungen ist durchaus bekannt, und da kann dir weitergeholfen werden. Was mich stutzig macht, und sogar _extrem_ stutzig macht, ist die Angabe dieses "\r" am Ende der Zeile. Das dürftest du unter Windows normalerweise auch bei einer korrekten XAMPP-Installation _niemals_ zu sehen bekommen. Es deutet auf irgendeinen Defekt in deiner XAMPP-Installation hin - oder es ist dem Windows-System geschuldet, das du benutzt. Und BTW: gerade bei solchen Fragen ist es enorm wichtig, daß du auch angibst, _welches_ Windows du grade am Laufen hast.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo Christoph.

      mit http://localhost/cgi-bin gibt´s Probleme, genauergesagt einen Internal Server Error.

      Na klar gibts das. Weil du dieses Verzeichnis nicht direkt aufrufen darfst, was auch Sinn macht.

      In diesem Falle sollte aber normalerweise 403 statt 500 erscheinen.

      Einen schönen Sonntag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      mathbr:del.icio.us/ mathbr:w00t/