Perl CGI FAQ (Idiots Guide)
Christoph Zurnieden
- cgi
Hallo Zusammen,
da es sich herausstellt, das immer noch viele Leute mittels CGI in Verbindung mit Perl ihre HTTP Ausgaben zu steuern suchen, habe ich mal meinen Übersetzungsversuch von http://www.perl.com/language/CPAN/doc/FAQs/cgi/idiots-guide.html neu aufgelegt.
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 http://www.perl.com/perl/faq/ 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 sehe, das es so nicht auszuführen ist. so setze 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/Oder Für Dieser Datei Namensanhängsel?
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 als 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 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: Was Sind Des Perl Und Betriebsystemes Zahl?
A: ich stelle folgende fragen:
'perl -v'
'uname -a'
und erhalte auch die rechten antworten.
Q: Wie Lautet Der Bibliothek Zahl?
A: in der Bibliothek werde ich dieses tun:
grep -i version
oder für die zahl des Buches CGI.pm erfahre ich so:
'perl -le 'use CGI; print $CGI::VERSION''
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 http://www.perl.com/perl/manual/perldiag.html manualseite, 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 http://www.perl.com/perl/manual/perlsec.html manualseite, die ich sorgfältigst gelesen habe, bis ich sie verstand, auch die CGI sicherheits FAQ http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html habe ich brav 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 berichtige indem ich my() bezeichner benutze 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"; # <-- zwei Leerzeilen
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:
$| =index.html 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äret sich auf gar wundersame art und 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"(tm) ) Oder Nahmest Du Vieleicht Die Etwas Beschränktere cgi-lib.pl Bibliothek?
A: Ey, cool, ey! meinst du etwa jemand anderes hat das schon für mich gemacht? ich hatte keinen blassen schimmer, 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: was'n 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 An Sich 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-Werk-System, Das 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 http://www.perl.com/language/CPAN/doc/FAQs/win32/Perl_for_Win32_FAQ.html 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(im hintergrund das geräusch einer zu staub zermahlenden festplatte nachdem die Firmengeheimnisse gestohlen wurden)
Und die Moral von der Geschicht: nerve andere Leute nicht!
[Anm.d.Ü.: keine Lust mehr, außerdem kommt jetzt eh nur noch Werbung]
Copyright des Originals: 1996 Tom Christiansen.
Übersetzung: Christoph Zurnieden, czurnieden@gmx.de
Korrektur gelesen: Andrea, Angel001@gmx.net
just my <img src="http://www.euro.ecb.int/de/section/euro0/coins.CoinPar.Singlecd002.CommonFaceImage.gif" border=0 alt="">
Christoph Zurnieden