kay: Apache und Active Perl wollen nicht zusammen

Hallo.

ich hatte diesen problem schon einmal angebracht, aber kurz darauf war das forum geschlossen. also versuche ich es nocheinmal.

ich hab den apache server 2.0.47 und active perl 5.8 installiert und versuche nun cgi's mit perl zu erstellen. das problem ist, dass ich keine cgi's in meinem browser verwenden kann. die beispiele von selfhtml funktionieren bei mir alle nicht und wenn ich diese über den apache server aufrufe, dann erhalte ich eine fehlermeldung, dass die seite nicht gefunden wurde, obwohl die adresse eindeutig stimmt. in der config-datei von apache hab ich alle einträge vorgenommen. das einzige währe eine .htaccess-datei, die hab ich noch nicht. vielleicht liegt es daran, aber ich hab absolut keine ahnung wie diese datei aussehen soll, das steht nirgens. wie heißt die datei komplett und was soll drinstehen (ich hab leider nur bruchteile von informationen)?

danke schonmal und sorry, wenn das eigentlich gar keine ernsthaftes problem ist, hab aber sschon ewig infos darüber gesucht und finde nix, was mich weiter bringt.

kay

  1. hallo kay,

    erstmal eine kleine Bitte: es ist schwer, postings zu lesen, die konsequent auf die Groß-/Kleinschreibung verzichten. Versuch doch bitte, das zu berücksichtigen.

    ich hab den apache server 2.0.47 und active perl 5.8 installiert

    Gut, habe ich auch, und auf unterschiedlichen Systemen. Der Vollständigkeit halber solltest du schon angeben, daß du einen Windows-Rechner hast (was bei "Active-Perl" zu vermuten steht).

    und versuche nun cgi's mit perl zu erstellen

    Das bedeutet, frei übersetzt, du möchtest PERL-Scripts schreiben, die über die CGI-Schnittstelle eine entsprechende (Server-)Reaktion bewirken sollen? Kein Problem ...

    das problem ist, dass ich keine cgi's in meinem browser verwenden kann. die beispiele von selfhtml funktionieren bei mir alle nicht und wenn ich diese über den apache server aufrufe, dann erhalte ich eine fehlermeldung, dass die seite nicht gefunden wurde, obwohl die adresse eindeutig stimmt

    Deine "Adresse" stimmt wahrscheinlich nicht, und deinem Apache fehlt vermutlich die Fähigkeit, die in PERL-Scripts enthaltenen Befehle an den Interpreter weiterzureichen. Das heißt: du solltest mal in deiner httpd.conf nachschauen, ob ein Handler für CGI-Scripts definiert ist und ob die nötigen Aliase für dein cgi-bin-Verzeichnis ebenso vorhanden sind wie die zugehörigen Optionen.

    in der config-datei von apache hab ich alle einträge vorgenommen

    Das kann ich dir nicht glauben.

    das einzige währe eine .htaccess-datei

    Vergiß das ganz schnell. Auf deinem _lokalen_ Rechner sind .htaccess nicht zwingend nötig, und zur Lösung des von dir geschilderten Problems mit großer Wahrscheinlichkeit völlig ungeeignet (ganz unmöglich ist es allerdings nicht).

    ich hab absolut keine ahnung wie diese datei aussehen soll, das steht nirgens.

    Dann hast du dich nicht genug umgeschaut. Sieh dir mal an, was in http://aktuell.de.selfhtml.org/artikel/server/htaccess-faq/index.htm nachzulesen ist.

    Grüße aus Berlin

    Christoph S.

    1. Hallo nochmal.

      ich hab schonwieder vor zig Seiten gesessen und gelesen, hat nix geholfen. Ich denke es muss irgendwie an der Handerzuweisung liegen.

      Ich hab die Zeile

      AddHandler cgi-script cgi pl

      in der ScriptAlias-Directive für cgi-scripts, aber woher soll nun Apache wissen, dass der Inhalt an den Perl-Interpreter im Verzeichnis sowieso übergeben werden muss. Wo und wie muss ich das angeben.

      Ich bekomme immernoch die Browsermeldung, dass die Seite nicht angezeigt werden kann. In der Doku im Internet steht unter der Problemlösung zu diesem Problem, dass ich mir den Abschnitt zum Erlauben von cgi-scripts nochmal durchlesen soll, wohl nun zum tausendsten mal.

      Danke nochmals für die Hilfe, bin leider noch keinen Millimeter vorwärts gekommen.

      tschö,
      Kay

      1. Hi kay,

        AddHandler cgi-script cgi pl
        in der ScriptAlias-Directive für cgi-scripts,

        brauchst Du nicht. ScriptAlias impliziert automatisch, daß alles, was unter diesem URL-Baum angesprochen wird, CGI ist.

        aber woher soll nun Apache wissen, dass der Inhalt an den Perl-Interpreter im Verzeichnis sowieso übergeben werden muss.

        Das ist in der Tat das Problem.

        Wo und wie muss ich das angeben.

        Die erste Möglichkeit ist im CGI-Skript selbst (1. Zeile, "shebang").
        Unter Windows hast Du über die Apache-Konfiguration noch eine zweite Möglichkeit, welche Christoph Dir sicherlich gerne erklären wird (ich mag sie nicht besonders ...).

        Ich bekomme immernoch die Browsermeldung, dass die Seite nicht angezeigt werden kann.

        Vergiß Deinen Browser. Was steht in Deinem error_log?

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
        Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
        1. Hi Michael,

          Die erste Möglichkeit ist im CGI-Skript selbst (1. Zeile, "shebang").
          Unter Windows hast Du über die Apache-Konfiguration noch eine zweite Möglichkeit, welche Christoph Dir sicherlich gerne erklären wird (ich mag sie nicht besonders ...).

          Du spielst sicher auf diese Zeile an:
          ScriptInterpreterSource Registry

          Die finde ich persönlich deshalb hilfreich, weil die (?) shebang in meinem Lokal (WinXP) eine andere wäre als für meinen Webspace. So schließe ich zumindest diese Fehlerquelle aus.

          Viele Grüße
          Torsten

          1. Hi TorstenA,

            Die finde ich persönlich deshalb hilfreich, weil die (?) shebang in meinem Lokal (WinXP) eine andere wäre als für meinen Webspace.

            das hättest Du aber durch eine Installation Deines lokalen Systems kompatibel zu Deinem Webspace verhindern können.

            Viele Grüße
                  Michael

            --
            T'Pol: I apologize if I acted inappropriately.
            V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
            (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
            Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
            1. ich hätte nicht gedacht, dass die zeile

              ScriptInterpreterSource Registry

              so viel diskussion verursacht.

              ich weiß, dass es dann probleme geben könnte, wenn ich die scripts auf einen server lade und ich weiß, dass die erste zeile im perl-script die interpreter-position angibt, aber so funktionieren erstmal die beispiele aus selfhtml ohne diese zu verändern. wieso gibt es eigentlich diese variante

              #!/usr/bin/perl

              wenn sie meist so gar nicht funktioniert? (auf verschiedenen rechnern / servern)

              also tschö,
              kay

              1. Hi,

                ich hätte nicht gedacht, dass die zeile
                ScriptInterpreterSource Registry
                so viel diskussion verursacht.

                Och, die Diskussion ist doch so harmlos, dass man sie eigentlich gar nicht als solche bezeichnen kann ;)

                ich weiß, dass es dann probleme geben könnte, wenn ich die scripts auf einen server lade und ich weiß, dass die erste zeile im perl-script die interpreter-position angibt, aber so funktionieren erstmal die beispiele aus selfhtml ohne diese zu verändern. wieso gibt es eigentlich diese variante
                #!/usr/bin/perl

                Das ist meines Wissens nach die Standard-shebang auf Unix-Servern (jedenfalls bei den Anbietern, wo ich Webspace gemietet habe). Im Gegensatz dazu müsste die shebang auf meinem lokalen System (WinXP), damit die Skripte korrekt ausgeführt werden, so lauten:

                #!/perl/bin/perl.exe

                Um das lästige Umschreiben der shebang vor dem Upload zu umgehen, sieht meine shebang eben so aus, wie sie nach dem Upload korrekt ist. Den Perl-Interpreter findet mein System dann über den Registry-Eintrag.

                Viele Grüße
                Torsten

              2. Hi kay,

                wieso gibt es eigentlich diese variante
                #!/usr/bin/perl
                wenn sie meist so gar nicht funktioniert? (auf verschiedenen rechnern / servern)

                bei mir funktioniert sie auf allen Rechner, mit beliebigen Betriebssystemen.

                Viele Grüße
                      Michael

                --
                T'Pol: I apologize if I acted inappropriately.
                V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
        2. hi Michael ;-)

          Die erste Möglichkeit ist im CGI-Skript selbst (1. Zeile, "shebang").
          Unter Windows hast Du über die Apache-Konfiguration noch eine zweite Möglichkeit, welche Christoph Dir sicherlich gerne erklären wird (ich mag sie nicht besonders ...).

          Nö, wird er nicht, steht auch schon da inclusive Warnung ;-)

          Allerdings gebe ich gerne zu, daß ich die Anweisung gelegentlich aktiviere, wenn ich auf meinem Windows-Rechner an irgendwelchen Scripts herumbastle, die später auf einer UNIX-Kiste laufen sollen  -  ich mag halt auch nicht immer die shebang neu schreiben

          Grüße aus Berlin

          Christoph S.

    2. und hallo nochmal.

      ich nehm alles zurück und behaupte das gegenteil.

      folgende zeile behob das problem:

      ScriptInterpreterSource Registry

      sorry, ich hab leider die dumme angewohnheit immer alles klein zu schreiben, meine umschalttaste ist schon total verstaubt  ;-)

      tschö und trotzdem danke für die hilfe!

      kay

      1. hallo Kay,

        folgende zeile behob das problem:
        ScriptInterpreterSource Registry

        Du weißt hoffentlich, daß deine Scripts dadurch nicht "richtig" werden? Man sollte das nur aktivieren, wenn man genau weiß, was es bewirkt.

        Immerhin zeigt sich damit, daß dein Apache wahrscheinlich doch korrekt konfiguriert war, bloß in deinen Scripts hat irgendwas mit der "shebang" nicht gestimmt. Und da du ja wahrscheinlich irgendwann auch mal deine Scripts auf anderen Servern als deinem eigenen einsetzen willst, solltest du dich _dringend_ um Verständnis dafür bemühen, was die _allererste Zeile_ in einem PERLCGI-Script bewirkt.

        meine umschalttaste ist schon total verstaubt  ;-)

        Nix da, so eine Entschuldigung wird nicht entgegengenommen. Staub kann man fortpusten oder wegwischen.

        Grüße aus Berlin

        Christoph S.