|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Probleme beim Ausführen von Perlscripts in Browserumgebung
|
Seitenanfang |
Hallo an Alle! Ich bitte um Nachsicht, wenn ich hier im falschen Forum sein sollte. Ich bin noch blutiger Anfänger!Ich möchte Perl-Scripte über einen Browser ausführen. Dabei verweigert mir dieser des öfteren deren Ausführung und meldet statt dessen einen Fehler wie z.B. Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Hier zwei stellvertretende Beispiele für misslungene Perl-Scripte: 1. Beispiel Lesender Zugriff auf eine Datei auf Laufwerk d: (Hier also ein Windows-System mit Active Perl als Interpreter. #!c:/perl/bin/perl -w use strict; my $zeile; open DATEI, "d:\paswd.txt"; $zeile=<DATEI>; ‘Geschweige denn <STDIN> print $zeile; 2. Beispiel Aufruf einer Linux-Betriebssystemroutine zum Löschen eines Benutzers “meier” . !/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); my $a = system("userdel -r meier"); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Test-Ausgabe</title></head><body>\n"; print $a"; print "</body></html>\n"; Hier erscheint als Ergebnis eine Fehlernummer im Browser (z.B. 1280 oder 5632). Der Benutzer wurde aber nicht gelöscht. Das zweite Beispiel funktioniert - so weit ich mich noch erinnere - beim Aufruf des Perl-Interpreters aus der Bash heraus. Also: # perl -w /srv/www/cgi-bin/loesch.pl Warum -zum Teufel (Entschuldigung!) - funktionieren die Skripte nicht innerhalb einer Browserumgebung? Das Skript aus Beispiel 1 entstammt dem Hilfesystem “Selfhtml 8.1" aus dem Internet und sollte eigentlich funktionieren. Ich nutze als Webserver Apache 2.x, als Betriebssysteme Windows XP (Beispiel 1) und Linux Suse 9.2 (Beispiel ). Worin liegt mein Problem? Für Antwotren wäre ich danbar (Ein Königreich für eine Antwort, die mich weiterbringt!!!) Vielen Dank im voraus an Alle! Hendrik Kammholz (Mail: Hendrik_Kammholz@web.de)
Datum: 16.01.2006-20:10

|
re: Probleme beim Ausführen von Perlscripts in Browserumgebung
|
Seitenanfang |
| Hallo, zu 1) habe ich keine konkrete Idee, aber zu 2) : Ich arbeite selbst viel unter Unix (IBM AIX) mit Perl und CGI. Dabei hängt es von der Konfiguration des Apache ab, unter welcher Userkennung die CGI-Skripte ausgeführt werden. Dies führt hin und wieder zu Rechteproblemen, das könnte eine mögliche Ursache sein. Man testet das Skript von Hand - funzt - , Aufruf per Browser - funzt nicht - Gruß Ralf
Datum: 17.01.2006-05:23

|
re: Probleme beim Ausführen von Perlscripts in Browserumgebung
|
Seitenanfang |
| Hi, zu 1)
#!c:/perl/bin/perl -w use strict; my $file;open(DATEI, "<d:\paswd.txt") || die "Konnte d:\paswd.txt nicht öffnen, $!); while(<DATEI>) {$file .= <DATEI>; } close(DATEI); print $file;
Beim öffnen von Dateien sollte man immer ein "or die" Statement mit anghägen. Wenn Fehler auftreten, dann weiß man wenigstens welche. Außerdem glaube ich, dass die Slashes im Interpreteraufruf falsch rum sind, bin mir aber diesbezüglich nicht sicher, da ich unter Linux arbeite. Der "Internal Server Error" ist aber ein Indiz darauf hin.zu 2) [code] #!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); my $a = system("userdel -r meier"); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Test-Ausgabe</title></head><body>\n"; print $a"; print "</body></html>\n"; [code] Öhm, Benutzer löschen darf naturlich nur root und der Webserver läuft allenfalls als regulärer User. ;-) Im Übrigen sollten Benutzer, die sich in einer Webumgebung anmelden dürfen, aus Sicherheitsgründen NICHT direkt am System erstellt werden, sondern in einer SQL Umgebung. -uw
Datum: 17.01.2006-08:26

|
re: Probleme beim Ausführen von Perlscripts in Browserumgebung
|
Seitenanfang |
Hi Wie krieg ich den Webserver dann dazu, unter root zu laufen? Es geht hier nicht um eine Internet-Anwendung, sondern lediglich um eine Intranetlösung in einem Ausbildungsnetz.
Datum: 17.01.2006-11:56

|
re: Probleme beim Ausführen von Perlscripts in Browserumgebung
|
Seitenanfang |
| Hi, die erste Instanz des Webservers läuft als root. Diese beantwortet jedoch keine Anfragen sondern startet nur Kindprozesse. Die /etc/apache/httpd.conf ist dann dafür verantwortlich unter welchem Benutzer die Kindprozesse laufen. BTW: Sag mir mal die Adresse zum Server, wenn das Ding unter Root läuft, solche Sachen finde ich in der Tat interessant. ;-) Spass beiseite, das hat einen ganz bestimmten Grund, warum das nicht so ist. Die einzige Möglichkeit, die Dir bleibt ist, dass Dein Skript den Benutzer wechselt. Dazu musst Du das natürlich RootPasswort wissen. Wenn das Dein eigener Server, ist sollte das ja kein Problem darstellen. -uw
Datum: 17.01.2006-12:10

|
re: Probleme beim Ausführen von Perlscripts in Browserumgebung
|
Seitenanfang |
| Grausam, ich sage nur: man sudo ....
Datum: 18.01.2006-23:03

|
re: Probleme beim Ausführen von Perlscripts in Browserumgebung
|
Seitenanfang |
Ich habe von einem Verwaltungsprogramm gehört, dass mit Perl geschrieben ist und user anlegen kann. Leider habe ich keinen Zugriff auf den Quellcode, denn dann wären meine Probeme behoben! Wo in der httpd.conf kann ich Apache dazu veranlassen, als root aufzutreten und auch alle - wirklich alle - Anfragen zu beantworten (Also auch useradd, userdel usw...) ? Gruß Haka!
Datum: 19.01.2006-08:13

|
|

|

|

|
 |

|

|
|