Michael Schröpl: (ZUR INFO) CGI/Perl: "Es geht nicht ..."

Eigentlich hatte ich ja mal vor, die gesammelten Fragen bezüglich "mein CGI-Skript läuft nicht" als Artikel für SELFAKTUELL zusammenzufassen (und es wäre ein Monster daraus geworden, das derzeit bei Stefan auf Halde liegt).

Nachdem ich aber gerade diesen wunderhübschen Artikel [http://www.perl.com/CPAN-local/doc/FAQs/cgi/idiots-guide.html] gelesen habe, glaube ich damit - insbesondere von der Sprache her - nicht mehr konkurrieren zu können. (Man könnte den bestenfalls ins Deutsche übersetzen ...)

  1. Hallo Michael
    <schäm>Ich komm mir schrecklich unpassend vor </schäm>
    Ich hab ne Frage zu Xitami. Ich hab den jez installiert. Nun würde ich gerne wissen:
    Wo kann ich mein 'Stammverzeichnis für HTML Dateien' anlegen, wie in <../../tgba.htm> angegeben.
    MfG Matti

    1. Hallo Michael
      <schäm>Ich komm mir schrecklich unpassend vor </schäm>
      Ich hab ne Frage zu Xitami. Ich hab den jez installiert. Nun würde ich gerne wissen:
      Wo kann ich mein 'Stammverzeichnis für HTML Dateien' anlegen, wie in <../../tgba.htm> angegeben.
      MfG Matti

      Hallo, du kannst einen Ordner webpages auf C anlegen,C:/webpages und dann bei der server Einstellung(Main HTML directory:  ) auch den kompletten Pfad angeben.Das gleiche gilt für das cgi directory.
      Judith

    2. Hallo Matti

      Ich hab ne Frage zu Xitami. Ich hab den jez installiert. Nun würde ich gerne wissen:
      Wo kann ich mein 'Stammverzeichnis für HTML Dateien' anlegen, wie in <../../tgba.htm> angegeben.

      Im Verzeichnis von Xitami findest du unter anderem eine Datei xitami.cfg - darin kannst du an allen wichtigen Schraeubchen drehen - nur vergiss nicht, die ersten Zeilen davon zu lesen <g>

      viele Gruesse
        Stefan Muenz

      1. Ich bin leider nicht so der Englisch Künstler:
        Was bedeuten diese drei Zeilen:
        $basedir = "http://localhost";
        $baseurl = "http://localhost/webpages/forum.htm";
        $cgi_url = "http://localhost/cgi-bin/wwwboard.pl";

        Ich hab‚s verändert, wie ich es geglaubt für richtig befunden zu haben (cooler Satz). Basurl hab ich gedacht ist die Datei wo die Anfrage herkommt, cgi_url zeigt, wo di Perl Datei ist.
        Nächste Frage: Ist es egal, ob ich 'localhost' oder 'm-kitalo1' angebe?

        Danke

  2. Des Idioten Weg zur Lösung von Problemen mit Perl CGI

    Diese Seite wendet sich hauptsächlich an Unix Systeme.Wenn Sie sich zu etwas anderem hingezogen fühlen, nachdem Sie diese Seite gelesen haben, sollten Sie auf jeden Fall auch die verschiedenen anderen Perl FAQ's besuchen, nur zur Sicherheit.

    Wenn Du wie alle anderen Leute in den Newsgroups bist, hast Du uns schon mit dem geradezu klassizistischem CGI Problem konfrontiert:"Gehtnich'!", ohne uns hinreichenden Hintergrund anzubieten, auf das wir das das echte Problem weissagen mögen. Es macht uns rasend, weil Du hier wie ein sabbernder Idiot ankommst und um Gratis Beratung bettelst, ohne je irgendeine eigenen Gedanken daran verschwendet zu haben. Dies schreckt die Leute ab, die Dir eine helfende Hand hätten bieten können und läßt das Netz verkümmern indem Du den eh schon ärgerlich niedrigen Rauschabstand noch verschärfst.
    Zu Beginn schau einmal durch die Liste unten mit ein paar einfachen Fragen und Antworten. Da einige zusammenfassende Antworten angeboten werden, mußt Du die Richtige schon selbst herausfinden.

    Q: Wem Gehöret Dies Script?
    A: mir.

    Q: Welches Seien Des Scriptes Rechte?
    A: sie waren 0600, doch ich sah, das es so nicht auszuführen sei. so setzte ich es auf 0755 anstatt.

    Q: Ist Dein Script Im Rechten Ordner?
    A: nein, denn ich vergaß ES zu stellen in /usr/local/etc/httpd/cgi-bin/.

    Q: Ist CGI Recht Zur Ausführung Angewiesen Worden Auf Deinem Server Für Diesen Ordner Und, Und Auch Oder Für Dieser Datei Anhang?
    A: ach nein, mein sysadmin vergaß so zu tun, er dachte ein GET würde hinreichen, so schloss er keine möglichkeit zum POST ein.

    Q: Unter Welcher Uid Treibt Der Server Seine CGI Programme?
    A: wwwuser (oweh, er kann ja meine dateien und ordner gar nicht schreiben)

    Q: Vermag Des Servers Uid Jedwede Datei Zu Schreiben Die Du Zu Schreiben Suchst?
    A: grannini- ich besitze die datei, jedoch er läuft nicht wie ich, und die rechte sind 0600 an stelle von 0666. ich glaube aus diesem grunde vermag ich meine eigenen dateien nicht zu öffnen.

    Q: Was Geschiehet Wenn Du Dich Mit Ihm Sprichst?
    A: ich wußte nicht, das man mit ihm auch sprechen kann, ich kümmerte mich nie um die Schriften Der CGI.pm Bibliothek.

    Q: Was Stehet Geschrieben In Des Servers Log?
    A: ich habe nie daran gedacht, zu schauen, oh, da steht ja was - egal.

    Q: Wo Sind Die Tafeln Mit Des Servers Log?
    A: (naja, kann man nie wissen-ist systemabhängig. nimm mal deinen admin unter den arm und schau in /usr/local/etc/httpd/logs/error_log vieleicht findet ihr dort, was ihr suchtet)

    Q: Wie Lautet Der Bibliothek Zahl?
    A: in der Bibliothek werde ich dieses tun:

    grep -i version

    und die zahl des Buches erfahre ich so:

    $ perl -le 'use CGI; print $CGI::VERSION'

    2.21

    Q: Wie Lautet Der Weg Zum Ausführenden Perl Auf Dem Server?
    A: /contrib/bin/perl

    Q: Und Wie Lautet Der Weg, Den Du Beschrieben In Deinem Script?
    A: /usr/bin/perl (auwei, dann konnte er ihn ja gar nicht finden)

    Q: Wie Lautet Des Servers Http Dämonen Zahl, Auf Das Die Leute, Die Dir Helfen Könnten Ein Grösseres Wissen Erlangen Über Deine Derzeitige Umgebung?
    A: NCSA 1.5

    Q: Was Geschiehet, So Du Gibst Perl Das -w Signal?
    A: er wird mir vorwerfen meine dummen fehler, und sie haarklein  beschreiben in der perldiag manualsseite, wo ich sie mir genauestens zu gemüte führen werde.

    Q: Was Geschiehet, So Du Gibst Perl Das -T Signal?
    A: er wird mich belehren über die probleme der sicherheit so wie sie geschrieben stehen in der perlsec manualsseite, die ich sorgfältigst gelesen habe, bis ich sie verstand, auch die CGI sicherheits FAQ habe ich gelesen.

    Q: Was Geschiehet, So Du Perl Den Befehl use strict Mitgibst?
    A: er zwingt mich meine variablen zu bezeichenen und meine zeichenketten zwischen gänsefüßen zu plazieren und er wird finden all die dummen fehler, die ich mit Sorgfalt berichtigte indem ich my() bezeichner benutzte und use vars und die füße der gänse.

    Q: Vergaßest Du Auch Nicht Die MIME Gestalt Vor Allen Anderen non-header Herauszuschicken (Andere headers Mögen Sein Location: oder auch Set-Cookie:)
    A: oh richtig. erst muss ein kopf da sein bevor der körper folge. ich glaube ich muss es früher sagen als ich es tat und ich muß mich versichern das zwier neue linien folgen, nicht nur eine.
    print "Set-cookie: GroversDelight\n";
            print "Content-Type: text/html\n\n";        # <-- two newlines
            print "<HEAD><TITLE>Sample Title</TITLE></HEAD>\n";

    Q: Vergaßest Du Auch Nicht STDOUT Zu Reinigen Gleich Zu Anfang Deines Scriptes Auf Das Die Gestalt MIME Entweichen Kann Noch Vor Den Greulichen Fehlern?
    A: aoouuuuh, neee - jungejunge, kein wunder, das er nicht entwischen kann, bevor die bude in die luft geht! ich glaube ich setze diesen hier mal an die spitze:
    $ = 1

    Q: Was Geschiehet So Du Prüfest Den Rückgabewert Aller Und Jeder Deiner syscalls?
    A: das sieht nach einer ganzen menge arbeit aus, jedoch sicherlich, sofern ich dieses hinzufüge
    open(FILE, ">some_file")
                 die("can't write some_file: $!");
    wird das error log mir zeigen, das $! beinhaltet "zugriff verweigert" oder auch "keine solche Datei und kein solcher Ordner" und alles klärt sich auf gar wundersame weise.

    Q: Liesest Du Das Standart CGI.pm Modul Die Arbeit Für Dich Tun Anstatt Selbst Zu Wühlen (Das Wäre Wirklich Echt Idiotisch) Oder Nahmest Du Vieleicht Die Etwas Beschränktere cgi-lib.pl Bibliothek?
    A: Ey, geil, meinst du etwa jemand anderes hat das schon für mich gemacht? ich hatte keinen blassen schimmer, das ich gar nicht wusste, das ich nicht alles selber machen muß und das ich die neueste version dieses prima CGI moduls von http://www.perl.com/cgi-bin/cgi_mod?modules=CGI kriegen kann.

    Q: So Du Nutzest Eine Bibliothek, Hattest Du Eine make install In Den Stein Geschlagen Auf Das Sie Auf Dem Rechten Platz Sitze (Irgendwo in @inc, Wahrscheinlich Sogar In /usr/local/lib/perl/site_perl/CGI.pm) Auf Das Sie Jederzeit Gefunden Werde Und Ihre Rechte Gesetzt Auf 0644, Oder Hast Du Lediglich Von Hand Kopiert Und Am Pfad Gedreht Oder Am Recht Oder Gar An Beiden?
    A: wasn make?  schau, ich habe einfach das dingen ins cgi-bin kopiert und dann auf 0700 gesetzt. ich glaube, das funktioniert gar nicht, oder?

    Q: Vergaßest Du Auch Nicht Deine Frage In Der Halle Von comp.infosystems.www.authoring.misc Zu Stellen Anstatt Die Heiligen Höhlen Von comp.lang.perl.* Mit Deine Fragen Zu Verpesten, Die Nun Überhaupt Nichts Mit Perl zu Tun Haben?
    A: nö, kriege ich deshalb nie ne vernünftige antwort sondern werde immer nur unflätig beschimpft und mit kot beworfen?

    Q: So Du Fahrest Mit Einem Hirnzerfressenem, Sadistischem Pseudo-Wagen, Der Erbaut Wurde Im Teuflischen Reich, Schertest Du Dich Darumb, Zu Lesen Das Wihdumm Perl Faq Und Was Es Sagt Über Das Web?
    A: nein, habe gar nichts gewußt vom Perl Für win32 FAQ geschrieben vom unerschrockenem und wagemutigem Evangelo Prodromou.

    Q: Vermiedest Du Es Einen Interpreter Auf Die Art Und Weise In Das cgi-bin Zu Legen Vor Der Du In http://www.perl.com/perl/news/latro-announce.html Gewarnt wurdest Und Auch Von CERT?
    A: Nein, was sollte daran falsch sein(ein geräusch einer zu staub zermahlenden disk, dem die versammelten spione im hintergrund verstohlen lauschen [Anm.d.Ü.: ???])

    Und die Moral von der Geschicht: nerve andere Leute nicht!
    [Anm.d.Ü.: keine Lust mehr, außerdem kommt jetzt eh nur noch Werbung]

    Copyright 1996 Tom Christiansen.

    1. Des Idioten Weg zur Lösung von Problemen mit Perl CGI

      :-)))))
      Wunderschön!
      Ein dickes Lob an den Übersetzer.

      (ein geräusch einer zu staub zermahlenden disk, dem die versammelten spione im

      hintergrund verstohlen lauschen [Anm.d.Ü.: ???])

      (noise of disk grinding to dust after corporate secrets stolen heard in the background)

      So vielleicht?
      (im hintergrund das geräusch einer zu staub zermahlenden disk nachdem die Firmengeheimnisse gestohlen wurden)

      1. Hallo Andrea

        :-)))))
        Wunderschön!
        Ein dickes Lob an den Übersetzer.

        Der Übersetzer ist zwar schon dick genug, aber trotzdem Danke. Es ist auch keine Übersetzung im eigentlichen Sinne, mehr eine "Übertragung ins deutsche", der ich aus persöhnlichem Geschmack heraus die Spitze nahm, indem ich stark übertrieb.

        (ein geräusch einer zu staub zermahlenden disk, dem die versammelten spione im
        hintergrund verstohlen lauschen [Anm.d.Ü.: ???])

        (noise of disk grinding to dust after corporate secrets stolen heard in the background)

        So vielleicht?
        (im hintergrund das geräusch einer zu staub zermahlenden disk nachdem die Firmengeheimnisse gestohlen wurden)

        Das war auch meine erste Idee, aber das wäre dann, rückübersetzt, eigentlich:
        "noise of disk, grinding to dust, after the corporation secrets had been stolen, was heard in the background"
        Die Kommatas sind eigentlich nicht nötig, aber der besseren Übersicht wegen von mir so gesetzt.
        Aber ich nehme einfach mal stark an, das das auch so gemeint war und Deine Version wohl korrekt ist, also:
        Dankeschön!!
        Ich habe es auch gerade nochmal mit dem Original verglichen und ein paar mehr oder weniger "dicke Hunde" in meiner Übertragung gefunden, werde aber nichts mehr dagegen tun, es sei denn, es wird hier ausdrücklich gewünscht. Ist halt eine Rohfassung, auf die Schnelle in 20 Minuten gemacht, war ja schon spät und ich brauche meinen Schönheitsschlaf.
        In der Annahme, das meine Übertragung weit genug vom Original abweicht, setze ich sie hiermit unter GPL Version 2 oder höher, also macht danit, was ihr wollt. Solange keiner behauptet, dass es von ihm ist, ist es mir egal. Ich würde aber sicherheitshalber empfehlen, das Copyright des Originales irgendwo noch mit unterzubringen.

        Vorschlag:
        Ich bin gerne bereit kleinere Sachen zu übersetzen, so es meine Zeit zuläßt. Wenn es sich um Gebrauchsanweisungen oder Manpages o.ä. handelt bin ich natürlich so genau, wie es die Unterschiede, zwischen der deutschen und der englischen Sprache zulassen.
        Wie gesagt, kleinere Sachen. Die Ausgabe von
        man perl
        wäre mir z.B etwas zuviel (gibt es meines Wissens aber schon)

        Corrigenda:

        Am ende muß es natürlich heißen:

        Copyright DES ORIGINALES bei Tom Christiansen

        Ins deutsche übertragen von Christoph Zurnieden, Ähnlichkeit mit dem Original ist nur bedingt gegeben, KEINE 1:1 Übersetzung!

        Also:
        bis die Tage
        Christoph

        1. Hallo Christoph,

          (ein geräusch einer zu staub zermahlenden disk, dem die versammelten spione im
          hintergrund verstohlen lauschen [Anm.d.Ü.: ???])

          (noise of disk grinding to dust after corporate secrets stolen heard in the background)

          So vielleicht?
          (im hintergrund das geräusch einer zu staub zermahlenden disk nachdem die Firmengeheimnisse gestohlen wurden)

          Das war auch meine erste Idee, aber das wäre dann, rückübersetzt, eigentlich:
          "noise of disk, grinding to dust, after the corporation secrets had been stolen, was heard in the background"

          Nenene, übersetzen und dann rückübersetzen gilt nicht!
          Mach das 2 oder 3 mal, dann hast Du aller Wahrscheinlichkeit nach etwas, das mit dem Original überhaupt nicht zu tun hat. Das ist wie bei diesem Kinderspiel: Flüsterpost ;-)

          Aber ich nehme einfach mal stark an, das das auch so gemeint war und Deine Version wohl korrekt ist, also:
          Dankeschön!!

          Bitte :-)
          Kann trotzdem leicht sein, dass das etwas ganz anderes bedeutet ...

          Gruss,
          Andrea