Warum läuft mein Skript nicht:
alex
- perl
0 the-FoX0 alex
0 WebMex0 Klaus Mock
Hallo!
Wollte fogendes(gekürztes) Skript verwenden, um einem Besteller eine personalisierte Bestätigung zukommen zu lassen.
Jetzt hab ich mir das so zusammengebastelt, aber ich bekomme immer den "Internal Server error". Findet einer von Euch vielleicht auf den ersten Blick einen Fehler??? Kann das sein, dass das mit Print mail unten doch nicht so einfach geht???
#!/usr/bin/perl
$Sendmail_Prog = "/usr/lib/sendmail";
use CGI qw(param);
$Hersteller = param("Hersteller");
$Produkt = param("Produkt");
$Beschreibung = param("Beschreibung");
$Vorname = param("Vorname");
$Nachname = param("Nachname");
$email = param("email");
$mailto = param("mailto");
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "From: $email\n";
print MAIL "Subject: Bestätigung Ihrer Online-Bestellung\n\n";
print MAIL "Hallo $Vorname $Nachname!\n\n";
print MAIL "Vielen Dank für Ihre Bestellung!\n\n\n";
print MAIL "Hiermit bestätigen wir Ihnen Ihre Bestellung für folgendes Produkt:\n\n";
print MAIL "$Hersteller $Produkt $Beschreibung\n\n\n";
close(MAIL);
Vielen Dank im voraus,
Alexander
Hallo,
hört sich nach einem Syntax Fehler an. Hast Du das Script denn auch im ASCII-Mode hochgeladen ?!
-------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
geht denn das überhaupt ?!
Hi!
hört sich nach einem Syntax Fehler an. Hast Du das Script denn auch im ASCII-Mode hochgeladen ?!
Hab ich!
-------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
geht denn das überhaupt ?!
Warum nicht, wie soll ich das sonst machen?
Hallo!
Wollte fogendes(gekürztes) Skript verwenden, um einem Besteller eine personalisierte Bestätigung zukommen zu lassen.
Jetzt hab ich mir das so zusammengebastelt, aber ich bekomme immer den "Internal Server error". Findet einer von Euch vielleicht auf den ersten Blick einen Fehler??? Kann das sein, dass das mit Print mail unten doch nicht so einfach geht???
#!/usr/bin/perl
-------> SMTP-Programm zum Versenden der Mail:
$Sendmail_Prog = "/usr/lib/sendmail";
-------> Modul für CGI-Scripts einbinden:
use CGI qw(param);
-------> interne Daten aus den erwarteten hidden-Feldern auslesen:
$Hersteller = param("Hersteller");
$Produkt = param("Produkt");
$Beschreibung = param("Beschreibung");
$Vorname = param("Vorname");
$Nachname = param("Nachname");
$email = param("email");
$mailto = param("mailto");
-------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "From: $email\n";
print MAIL "Subject: Bestätigung Ihrer Online-Bestellung\n\n";
print MAIL "Hallo $Vorname $Nachname!\n\n";
print MAIL "Vielen Dank für Ihre Bestellung!\n\n\n";
print MAIL "Hiermit bestätigen wir Ihnen Ihre Bestellung für folgendes Produkt:\n\n";
print MAIL "$Hersteller $Produkt $Beschreibung\n\n\n";
close(MAIL);
$oksend = "http://www.blabla.de/versendet.html";
print "Location: $oksend\n\n";
Vielen Dank im voraus,
Alexander
1. Perl vordert eine Ausgabe im Browser.
z.B. : habe dir oben am Ende des Scripts zugefügt.
2. Prüf aber auch nach ob Perl Verzeichnis und MailProgramm Verzeichnis korrekt sind.
Ich hoffe so sollte es funktionieren.
Hallo!
- Perl vordert eine Ausgabe im Browser.
Falsch: Der WebServer will unbedingt was zum Browser senden, auch wenn es "nichts" ist. Perl interessiert das herzlich wenig!
print "Status: 204 No response\n\n";
Aber natürlich ist eine Ausgabe zum Browser sinnvoll, um dem Kunden ein Response zu geben.
Gruß Frank
Zusatz: bis auf die fehlende Ausgabe zum Browser, die auch den berühmten Error 500 zur Folge hat, scheint das Script in Ordnung zu sein. Bei mir läufts ;-)
print "Status: 204 No response\n\n";
Das ist so gut wie "nichts", der Webserver ist zufrieden und der Browser verändert in seiner Anzeige nichts, die vorhergehende Seite bleibt also bestehen.
Gruß Frank
Hallo,
Was steht im Serverlog?
Hast Du das script lokal überprüft?
Was wird vom Script an den Browser gesandt?
Kann der server Perlscript auch verarbeiten?
Wenn ja, unter welchen Vorausetzungen?
Ist z.B. das script auch ausführbar?
Ist sendmail am Server auch dort, wo Du es vermutest?
und nochmals
Was steht im Serverlog?
Fragen, die aufgrund Deines Postings keiner außer Dir auch nur annähernd korrekt beantworten kann. Und wenn Du sie beantworten kannst, dann wirst Du auch vermutlich die Lösung gefunden haben.
Grüße
Klaus
Hi!
Was wird vom Script an den Browser gesandt?
Hab ich auch eingefügt, bringt aber nichts!
Kann der server Perlscript auch verarbeiten?
Ja, hab schon mehrer Skripte laufen. das stimmt schon alles!
Wenn ja, unter welchen Vorausetzungen?
s.o.
Ist z.B. das script auch ausführbar?
hab Rechte auf 755 gesetzt
Ist sendmail am Server auch dort, wo Du es vermutest?
s.o.
Ich versteh das einfach nicht, ich hab ein einfaches Skript, welches alle Daten auf einmal verschickt(welches läuft!!!) als Vorlage genommen, und nur einzelnde Parameter mit eingefügt die dann in die mail geschrieben werden. Irgendwas fehlt in dem was ich geschrieben habe! Oder ein Syntax Fehler.
Gruß
Alex
Hi!
Ich versteh das einfach nicht, ich hab ein einfaches Skript, welches alle Daten auf einmal verschickt(welches läuft!!!) als Vorlage genommen, und nur einzelnde Parameter mit eingefügt die dann in die mail geschrieben werden. Irgendwas fehlt in dem was ich geschrieben habe! Oder ein Syntax Fehler.
Bleibt eigentlich nur ein falscher Transfer bzw. File-modus -> ASCII !!!
Je nach Editor und FTP-Programm:
Speichen im UNIX-Format
Transfer im ASCII-Mode
Gruß
Alex
»Hi!
Hab den Fehler gefunden:-) Hab im mailtext "" benutzt ;-()
So was dummes!!!!
Jedenfalls hab ich jetzt ein 2. Problem, jetzt will ich das Skript in ein Skript integrieren, welches einen EIntrag in eine csv Datei macht.
Problem: Wie füge ich das ein???
wenn ich das direkt unter den Perl-Aufruf schreibe, funktioniert das DB Skript nicht mehr, anders rum genau so!
Odr soll ich einfacher beide Skripte einzelnd über einen Submit button laden?(wie)
Gruß
Alex
»Hi!
Hab den Fehler gefunden:-) Hab im mailtext "" benutzt ;-()
So was dummes!!!!
:-)
Problem: Wie füge ich das ein???
wenn ich das direkt unter den Perl-Aufruf schreibe, [...]
Hä? Du meinst am Anfang des Scripts? Also nach der ersten Zeile und nach den event. 'use' und 'require' Anweisungen?
[...] funktioniert das DB Skript nicht mehr, anders rum genau so!
Möglicherweise liegt hier Dein Problem:
use CGI qw(param);
Nutzt Dein DB-Script CGI.pm oder vielleicht nicht? Wenn ja, wie - vielleicht objektorientiert (siehe unten)? Wenn ja, dann solltest Du das Mailscript auch umstellen.
Oder soll ich einfacher beide Skripte einzelnd über einen Submit button laden?(wie)
Geht mit Javascript, aber das haben nicht alle User eingeschaltet...
Noch'n Tipp: eine Bestätigungsmail und -Seite solltes Du erst ausgeben, wenn alle Aktionen erfolgreich waren, also nicht gleich am Anfang des Scripts.
Gruß Frank
P.S. erkennst Du z.B. an solchen Konstruktionen:
use CGI;
$query = new CGI;
$hersteller = $query->param('hersteller');