(Web-) Design und webbasierte SprachenTipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...
und Apache2 ?!
Diskussion: und Apache2 ?! im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige
ööh joa,
Ich schlag mich grad mit meinem Apachen und Perl herum...
Ich hab versuch mod_perl auf dem Server ...
Ich schlag mich grad mit meinem Apachen und Perl herum...
Ich hab versuch mod_perl auf dem Server zum laufen zu kriegen,
aber es will ums verrecken net funktionieren:
meldung
Code:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@fumuga.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
in der Logfile steht dass das Script ein unerwartetes Ende hätte.
Für den AddHandler cgi-script muß auch das CGI-Modul geladen sein. Das 'premature end of script header' kommt allerdings oft daher, daß das Skript für den Apache nicht lese- oder ausführbar ist. Ansonsten poste mal bitte die komplett Apache-Konfiguration. Aus Sicherheitsgründen solltest du ExecCGI auch nur für deinen Skript-Ordner und auf keinen Fall global setzen und dann mit ScriptAlias im entsprechenden VHost bekannt geben, wo sich der Skript-Ordner befindet. Idealerweise sollte der außerhalb des DocumentRoot liegen.
Stimmen denn die Rechte des Skripts und hat es eine Newline am Ende? Außerdem kannst du das 'AddType cgi-script .pl .cgi' getrost rausnehmen. Der AddHandler-Eintrag reicht da im Normalfall völlig aus. Im Normalfall sollten die notwendigen Einträge ja auch korrekt gemacht werden, wenn du das Modul wie unter Debian/Ubuntu üblich mit a2enmod aktivierst. Außerdem solltest du dich entscheiden, ob du das Perl-Modul oder das CGI-Modul nutzen willst. Beide zusammen können meiner Erfahrung nach zu seltsamen Fehlern führen. Und das wichtigste... deinem Skript fehlt die wichtigste Zeile:
Code:
print "Content-type: text/plain", "\n\n";
Das muß als erste Zeile immer ausgegeben werden, damit der Browser mit dem Output des Skripts was anfangen kann. Sonst bekommst du nämlich auch diesen 500er-Fehler.
öhm, was würdest du empfehlen? Perl oder CGI?
Ich möchte eigentlich schon gerne richtige Perlscripte schreiben...
Kann ich dann das CGI-Modul trotzdem ganz normal benutzen wenn ich das CGI-Modul im Apachen deaktiviere?
Ich empfehle die Nutzung des mod-cgi, solange du nicht direkt den Apache mit deinen Skripten steuern willst. Es ist einfach sicherer, da leichter konfigurierbar, wodurch sich weniger Fehler einschleichen können. Wobei ich gerade sehe, daß mod_perl ohne mod_cgi garnicht mehr funktioniert. ?(
In Sachen Sicherheit ist das net soooo tramatisch, da es nur ein Webinterface wird,
zu dessen Code selbst auch nur ich und mein Kollege (look@she - auch hier im board unterwegs) Zugang haben werden.
Übrgebene Daten werden sowieso nicht direkt verarbeitet, sondern mit diversen Prüfungen entsprechend behandelt.
( warum kann es in Perl denn verdammtnochmal kein Case geben... *grml* ^^ )
Es hat auch nur ein V-Host ( der nur für das Webinterface zuständig ist ) die Berechtigung CGI-Scripte auszuführen, weshalb ich mir in Sachen Sicherheit da weniger Sorgen mache
Ich werd mal bissel ausprobieren ob das was ich machen will auch mit mod_cgi allein funktioniert.
Original von keksinat0r
( warum kann es in Perl denn verdammtnochmal kein Case geben... *grml* ^^ )
Gibt es:
Code:
use Switch;
switch ($val) {
case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (@array) { print "number in list" }
case /\w+/ { print "pattern" }
case qr/\w+/ { print "pattern" }
case (%hash) { print "entry in hash" }
case (\%hash) { print "entry in hash" }
case (\&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}