Flori Geschrieben 24. Dezember 2006 Geschrieben 24. Dezember 2006 Hallo zusammen, ich habe mal folgende Frage zum Verhalten von "die" innerhalb eines Perl-Skripts und würde mich freuen, wenn mir da jemand helfen könnte. Folgenden Aufruf verwende ich in einem Skript, um Verbindung zu einer Datenbank herzustellen. Das Skript wird über per CGI in einem Webbrowser aufgerufen ("http://localhost/cgi-bin/dbconnect.pl"): my $dbh = DBI->connect("DBI:$SQL_Driver:$db", $SQL_User, $SQL_Passw) or die "Verbindung konnte nicht hergestellt werden: $DBI::errstr\n"; Schlägt nun mal der DB-Aufruf fehl, z.b. falscher Passwort / falscher Benutzer o.ä., schreibt mir der zweite Teil des Aufrufs ("or die") den Text "Verbindung konnte nicht hergestellt werden: " plus Error-String aus "DBI::errstr" in mein Apache-Error-Logfile. Im Browser-Fenster erscheint dann überhaupt keine Ausgabe. "die" schreibt so wie ich weiß nach STDERR und da es über den Webserver aufgerufen wird ist es ja irgendwo logisch und nachvollziehbar, daß es sich um die Webserver-Error-Datei handelt. Meine Frage ist nun: Wäre es möglich die Ausgabe von "die" derart umzubiegen, daß in eine von mir vorgegebene DAtei geschrieben wird?? Folgendes hab ich schon mal probiert, aber damit kam dann nirgendwo mehr ein Hinweis auf einen Fehler an: close STDERR; open STDERR,"C:/apache/tmp/errortext.log" or print "Datei nicht vorhanden"; Noch eine Zusatzfrage: Wäre es okay, statt "die" ein "print" zu verwenden, damit im Browser eine Fehlermeldung erscheint, zum Beispiel so: my $dbh = DBI->connect("DBI:$SQL_Driver:$db", $SQL_User, $SQL_Passw) or print "Verbindung konnte nicht hergestellt werden: $DBI::errstr\n"; Oder gäbe es da "galantere" Wege? Vielen Dank schon mal im Voraus, wenn sich ein "Perl-ianer" meiner annehmen würde! Viele Grüße und Euch allen noch ein schönes Weihnachtsfest und schon mal einen guten Rutsch ins neue Jahr!!! Flo Zitieren
Jhonny Geschrieben 2. Januar 2007 Geschrieben 2. Januar 2007 Hallo, ein frohes neues Jahr wünsch ich euch allen! jetzt zu deinem Problem. In PHP würde ich das Problem so lösen,... ich denke das kann man auch mit PERL so oder so ähnlich machen function sqlError($errorNO) { $test="hahaha"." ".$errorNO; echo $test; // irgendwas in die Datei schreiben } $suche="select * from test"; $erg=mysql_query($suche)or die(sqlError('irgendeineNachricht')); So viel Spaß beim ausprobieren Mfg Jhonny Zitieren
etreu Geschrieben 2. Januar 2007 Geschrieben 2. Januar 2007 In Perl gibt es hierfür das Modul CGI::Carp (http://search.cpan.org/~lds/CGI.pm-3.25/CGI/Carp.pm). Zitieren
Flori Geschrieben 7. Januar 2007 Autor Geschrieben 7. Januar 2007 Ui, vielen Dank! Das liest sich beides interessant, insbesondere das Carp-Modul, da in der Beschreibung direkt was von "Redirect Error Messages" steht. Das werde ich dann mal probieren. Grüsse Flori Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.