| ||
Navigation |
Seiten-InhaltCGI mit PerlCGI ProgrammierungHTTP-Server ApacheUm überhaupt CGI-Scripte lokal auf dem eigenen Rechner zu starten - und zu testen, muß ein HTTP-Server auf dem Rechner installiert werden. Erst habe ich versucht, mit OHTTP zu arbeiten. Für 'erste Schritte' ist dieser vollkommen ausreichend. Vor allem die Konfiguration ist für 'den ersten HTTP-Server' recht leicht verständlich in einem Windows-Fenster mit vielen Reitern untergebracht. Leider unterstützt er nicht alle Features, die für einen Server möglich sind (z.B die Fehlerausgabe via 'print STDERR ...' in die Error-Log-Datei funktioniert(e damals?) nicht). So habe ich mich für einen HTTP-Server entschieden, der sogar noch kostenlos zum Download zur Verfügung steht: den Apache-Web-Server. Hier ein Link zum Download von Apache. Für die Konfiguration in einer Textdatei muss schon ein wenig Verständnis und Erfahrung vorhanden sein. Hat man diese Hürde aber erst einmal überwunden, so stehen alle Türen und Möglichkeiten offen... Der Apache ist schlißelich nicht umsonst ein weiter verbreiteter Web-Server - erstaunt war ich damals auch, wie problemlos er sich auch auf dem eigenen kleinen "normalen" Rechner installieren läßt. ProgrammierungIch habe alle meine Erkenntnisse größtenteils aus den
beiden Perl- Standardwerken 'Programmieren mit Perl'
und 'Perl-Kochbuch' (siehe auch hier). Danke an Volker! Der Shebang ("Schibäng" *g*)In Perl-Scripten wird in der ersten Zeile dem Apachen festgelegt, wie er mit der Datei umgehen soll - wie in anderen Linux-/Unix-Scripten ist diese Zeile - der Shebang - der Pfad zu einem Interpreter, der weiß, wie er mit den folgenden Zeilen umzugehen hat. Einerseits kann man hier unter Windoof bspw. #!c:/Perl/bin/perl.exe use strict; ...angeben. Es gibt aber auch noch eine weitere Möglichkeit, dies zu umgehen, um bspw. Scripte von Linux-Systemen ohne Anpassungen des Shebang zu übernehmen. Hierfür ist ein wenig Konfiguration in der Apache-Konfigurationsdatei nötig - und ein
kleiner Eingriff in die Windows-Registry. Auf meinem System hatte ich aber nun das Problem, daß ich auch .CGI-Dateien als Perl-Scripte ausführen lassen musste. Da Windoofs in diesem Fall aber noch keine Zuornung hatte, daß es .cgi-Dateien auch als Perl-Scripte zu interpretieren hat, funktioniert dies erst nicht. Als ich dann aber die Registry-Struktur HKEY_CLASSES_ROOT\.cgi HKEY_CLASSES_ROOT\.cgi - (Standard) = Perl HKEY_CLASSES_ROOT\Perl HKEY_CLASSES_ROOT\Perl - (Standard) - nicht gesetzt HKEY_CLASSES_ROOT\Perl\ShellNew HKEY_CLASSES_ROOT\Perl\ShellNew - (Standard) - nicht gesetzteinfügte, war auch das kein Problem mehr. Es werden nun .pl- und .cgi-Dateien als Perl-Scripte von dem in der Windows-Registry eingetragenen Interpreter (bspw. "c:/perl/bin/perl") interpretiert und ausgeführt. (Bei mir funktioniert es so, wie ich oben beschrieben habe. Dies kann ggf. für andere Systeme so in der Art nicht unbedingt funktionieren - aber immerhin kann es als Anhaltspunkt dienen, eine Lösung zu finden. :-) Häufige Fehler(-meldungen)Treten beim ersten Testen von Perl-Scripten nach dem Hochladen auf den Server Fehler auf, so gibt es dafür in der Regel nur ein paar Gründe:
Weitere Fehlermeldungen entnehmen Sie der error.log-Datei. Ist bekannt, wo diese auf dem Server zu finden ist und können Sie auf diese zugreifen, so ist dort i.d.R. eine Beschreibung des Problems zu finden. Code-SchnipselSchnipsel I: Meist führen auf dem Server liegende Scripte nicht nur eine einzige Aktion aus. Durch die Übergabe von Parametern (durch Formulare oder im URL) kann man die Reaktion des Scripts auf den Aufruf beeinflussen. Um die auszuführende Aktion zu interpretieren, benutze ich meist folgende Zeilen:
#!/usr/bin/perl -w
use strict;
use CGI;
my $q = new CGI;
my %Aktionen = ( neu => &AddItem,
del => &DelItem,
);
my $todo = $q->param('action');
unless ($todo) { die 'Keine Aktion spezifiziert!' };
if ($Aktion{$todo}) { $Aktion{$todo}->() }
else { die 'Keine gültige Aktion!' };
sub AddItem { ... }
sub DelItem { ... }
(Das Script setzt voraus, daß mit dem Parameter "action" eine gültige Aktion übergeben wurde.) Schnipsel II: Die Sicherheit eines Scripts ist häufig ein wichtiger Faktor. Um einen Scriptfehler durch Pufferüberlauf o.ä. zu verhindern kann man mit folgenden Zeilen einige Fehler umgehen: $CGI::POST_MAX = 1024 * 100; # maximal 100K Postings $CGI::DISABLE_UPLOADS = 1; # keine Uploads Ansonsten ist natürlich darauf zu achten, daß möglicht alle möglichen Aktionen mit allen möglichen Werten und Inhalten vom Script ver- oder bearbeitet werden sollten. Schnipsel III: ... to be completed soon... ;-)
letzte Änderung:
14.Feb 2012
|
rechte SpalteBuchtips - mit und ohne ComputerUnter dem folgenden Link finden Sie eine Liste von Büchern, die ich für lesenswert halte.Klicken Sie hier. |
|
© Peter Prieß - 2007 |
|