Perl und CGI

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von musiKk, 07.03.2007.

  1. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Hallo,

    ich wollte mich mal bilden und habe Perl gelernt. Meine Grundlage war erstmal ein kostenlos verfuegbares Buch.

    Bei Kapitel 12 dann der erste Fehlschlag. Es geht um CGI-Programmierung. Man wird angewiesen, den http-Daemon httpd zu starten. Der ist bei mir sowohl vorhanden, als auch gestartet. ps ax | grep httpd sagt:
    Code:
     2619 ?        Ss     0:00 /usr/sbin/httpd
     2620 ?        S      0:00 /usr/sbin/httpd
     2621 ?        S      0:00 /usr/sbin/httpd
     2622 ?        S      0:00 /usr/sbin/httpd
     2623 ?        S      0:00 /usr/sbin/httpd
     2624 ?        S      0:00 /usr/sbin/httpd
     2633 ?        S      0:00 /usr/sbin/httpd
     2634 ?        S      0:00 /usr/sbin/httpd
     2635 ?        S      0:00 /usr/sbin/httpd
    Auch Fedoras grafische Dienste-Uebersicht erzaehlt mir, dass der Daemon laeuft.
    Als allererstes Beispielprogramm wird folgendes verwendet:
    Code:
    #!/usr/bin/perl
    use warnings;
    use strict;
    
    print "Content-type: text/plain\n\n";
    print "Hello CGI World!\n";
    print "You're calling from $ENV{REMOTE_HOST}\n";
    Dieses soll die eigene IP-Adresse ausgeben (vermute ich?). Bei mir kommt aber folgendes:
    Code:
    Content-type: text/plain
    
    Hello CGI World!
    Use of uninitialized value in concatenation (.) or string at cgihello.plx line 7.
    You're calling from
    Irgendwie hats also nicht funktioniert. Weiss jemand, warum und was ich da machen muss? :/
    Suche hat nicht viel gebracht.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. dmaphy

    dmaphy Routinier

    Dabei seit:
    16.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    Ort:
    Hamburg
    also ich würd erstmal das CGI-Modul mit benutzen, vielleicht behebt das schon das Problem:
    Code:
    use CGI;
    
     
  4. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Nein, das steht weder so in der Anleitung (und die stimmt hoffentlich), noch bringt es was, wenn ichs ausprobier... :/
     
  5. #4 Wolfgang, 08.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Dieses Beispiel wird nur funktioniren, wenn es auf einen Webserver läuft und ausgeführt wird.
    Dazu ist der httpd nebensächlich.
    Die Funktion geht dahin, dass ein Script auf einem Webservwer (mit diesem Inhalt ) aufgerufen wird. Dann wird(so vorhanden) die Umgebungsvariable ausgegeben.
    Da du use strict verwendest, wird eine nicht definierte Variable nicht zugelassen.

    Gruß Wolfgang
     
  6. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Das ist mir schon alles klar. Nur was muss ich denn sonst fuer einen Webserver hier laufen haben? Ich dachte httpd waere alles. Und im Buch steht auch, httpd muss laufen und dann sollte das gehn.
    Wenn ich in der Wikipedia beim Apache HTTP Server schaue, komme ich zu httpd.apache.org und das ist doch der Server? Und der laeuft ja auch.

    Oder hab ich da irgendwas falsch verstanden?
     
  7. dmaphy

    dmaphy Routinier

    Dabei seit:
    16.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    Ort:
    Hamburg
    Ja wie rufst du das CGI-Script denn auf? Das müsstest du schon über den Browser aufrufen, irgendwas ala http://localhost/cgi-bin/script.pl
    Entschuldige, falls das doof klingt, aber irgendwie ist für mich noch nicht hervorgegangen, ob du das auch so aufrufst...
     
  8. #7 Wolfgang, 08.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ich will meine Aussage nochmal etwas verdeutlichen:
    Entscheidend ist, dass du einen Server hast, der dein CGI-script interpretiert.
    Ob der als Einzelanwendung, oder deamon läuft oder wie der sich nennt, ist nebensächlich.
    Das CGI muss also von diesem Server interpretiert werden, und liefert dem anfragenden (Browser telnet oder was immer) das Ergebnis zurück.


    Wenn das alles gegeben ist, kannst du dir auch alle Umgebungsvariablen ausgeben lassen.
    z.B. so:
    Code:
    print "$_  :\t$ENV{$_}\n" for keys %ENV;
    [code]
    der du fängst den fehler in deiner Zeile selbst ab, indem du erstmal fragst ob es diese variable gibt.
    [code]
    if ($ENV{REMOTE_HOST})
    {
    print "You're calling from $ENV{REMOTE_HOST}\n";
    }
    else
    {
    print "\$ENV{REMOTE_HOST} not found\n";
    }
    
    Gruß Wolfgang
     
  9. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Wird nicht interpretiert -> Perl-Quelltext erscheint so im Browser.

    Ich hab das Gefuehl, ich muss da wohl noch so einiges suchen und lesen... Ich komm mir grad vor, als wuerde ich mit der Tuer ins Haus platzen.
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 .mike., 08.03.2007
    Zuletzt bearbeitet: 08.03.2007
    .mike.

    .mike. Doppel-As

    Dabei seit:
    27.08.2006
    Beiträge:
    207
    Zustimmungen:
    0
    hast du auch
    Code:
    #!/usr/bin/perl
    in der ersten zeile stehen ?
    dann natürlich noch den Content-type schicken.

    also fast wie in deinem beispiel
    an dem httpd dürfts auch nicht liegen weil des script ja ausgeführt wird und sonst alles
    der fehler liegt im script

    EDIT:
    nimm $ENV{REMOTE_ADDR} und nicht $ENV{REMOTE_HOST}
     
  12. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Ja irgendwie habe ich wohl die ganze Zeit das falsche Verzeichnis benutzt. Klappen tuts zwar immer noch nicht, aber immerhin krieg ich jetzt andere Fehler... Denke mal, ich sollte es jetzt hinkriegen.
    Trotzdem danke an alle. :)
     
Thema:

Perl und CGI

Die Seite wird geladen...

Perl und CGI - Ähnliche Themen

  1. Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern

    Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern: Das Hyperledger-Projekt der Linux Foundation will eine neue Form der dezentralisierten Kontoführung nach dem Prinzip der »distributed ledger« bei...
  2. Perl 6 offiziell vorgestellt

    Perl 6 offiziell vorgestellt: Wie erwartet, ist die Version C(hristmas) von Perl 6 veröffentlicht worden. Perl 6 stellt nicht, wie der Name suggeriert, einen Nachfolger von...
  3. Perl: 20 Jahre CPAN

    Perl: 20 Jahre CPAN: Vor 20 Jahren wurde das erste Modul in das Comprehensive Perl Archive Network (CPAN) hochgeladen, woran Neil Bowers mit einem Abriss der...
  4. Perl 5.22.0 freigegeben

    Perl 5.22.0 freigegeben: Die neue Version 5.22 von Perl bringt den Anwendern mehr Sicherheit bei Eingabedateien, Unicode 7.0 und zahlreiche weitere Verbesserungen....
  5. [Perl] Perl OO Methodenaufruf in anderem Objekt

    [Perl] Perl OO Methodenaufruf in anderem Objekt: Hallo, Ich bin dabei in Perl ein Pokerspiel zu programmieren, hänge aber momentan an einem Problem, wo ich nicht weiterkomme. Ich habe die...