WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PERL / DBI: Umstieg von Linux auf Windows Server (http://www.wcm.at/forum/showthread.php?t=71051)

Uurtyp 23.09.2002 22:29

PERL / DBI: Umstieg von Linux auf Windows Server
 
Hi

Habe Folgendes Problem:
Habe eine Homepage in Perl programmiert, welche das DBI modul verwendet, um auf eine mysql DB zuzugreifen. Das alles auf einem Linuxserver. Ich habe die module installiert und alles funzt einwandfrei.
Nun muss ich leider auf einen WIN server übersiedeln. Allerdings gibts da Probleme.
Anfangs war nat. kein Modul inst. -> Fehlermeldung das das Modul nicht existiert. klar ... dann habe ich per ppm .. das is dieses schwule inst. tool - mal per install DBI dieses Modul erfolgreich - wie der installer meint - installiert.
Mit dem Erfolg, dass ich wenn ich auf eine page gehe, die einen DB zugriff hat, keine Fehlermeldung mehr bekomme, sondern nur noch ne weisse page ohne irgendwas.
Ich finde auch leider kein errorlogfile - wie im linuxrechner - dort schau ich ins httpd logfile und habe alle probs aufgelistet. Im Winrechner - also entweder er schreibt in kein logfile rein, oder ich finds nicht.

Bitte um Hilfe wäre wichtig
Danke schon mal!

mfg
Uurtyp

_m3 23.09.2002 22:46

OK - vorab: DBI/DBD funktioniert auch unter Windows.

Schon mal mit "use CGI::Carp qw(fatalsToBrowser);" probiert? >> http://www.perldoc.com/perl5.6/lib/CGI/Carp.html

Wenn ich mich richtig erinnere, kann man im IIS die Lokation der Logs (auch fehlerlog) definieren). Schau mal genau im Admin-Tool.

Uurtyp 24.09.2002 12:22

hey
danke mal für den tip - werde ich gleich probieren. - vorallem das mit dem log

weil - ich habe bereits einiges mehr herausgefunden.

zum Teil lag es an meiner eigenen blödheit ... habe absolut vergessen beim transferieren auf den winserver die db spezifischen Daten zu ändern. naja - also deswegen kann schon mal gar nichts gehen
jetzt bin ich soweit, dass ich ein kleines hallo welt dummy file geschrieben habe - das funktioniert .. mit PERL.
Schritt für Schritt habe ich den code eingefügt um rauszufinden, wo genau jetzt das Problem liegt.
also ich kam noch über USE CGI, DBI hinweg - die variablen definitionen für die DB haben auch noch hingehaut - aber der sobald ich den connect befehl
my $dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD) or die "Fehler bei Datenbankverbindung: $!";
mit in mein file nehme, bleibt die page weiss.
Kann für mich nur 2 Gründe haben
entweder die Daten stimmen nicht, die ich angegeben habe....
oder mit dem befehl hats was unter windows.
Die daten können eigentlich nur stimmen - wenn ich mit den selben daten per phpMyAdmin auf die mysql DB zugreife funktioniert es ....
also kanns nur noch mit dem Befehl was haben. So interpretiere ich das zumindest.
Ich werde mal nach dem log suchen - vielleicht finde ich ja was brauchbares.

Danke mal soweit - vlt fällt euch dazu noch was ein?
mfg
Uurtyp

_m3 25.09.2002 19:19

Was fuer eine Datenbank? Wie angebunden (direkt, ODBC, ...)?

Uurtyp 26.09.2002 11:20

oook
folgendes

"use CGI::Carp qw(fatalsToBrowser);" bewirkt leider gar nichts.
zu den logfiles ... ich bin nicht der serveradmin - aber der hat in so ca jedes logfile geschaut - und es steht nix adnormes drinnen.

nach echt langem herumprobieren haben wir es geschafft überhaupt einmal eine Fehlermeldung zu erreichen - und zwar wenn wir
"print "Content-type: text/html\n\n";"
auskommentiert haben.
weiters sind wir draufgekommen, dass noch ein mysql package gefehlt hat usw.
Mittlerweile sind wir soweit, dass eine page, mit DB connection UND sogar ner abfrage funktioniert - wer hätte das gedacht. Aber glaube nicht - wir sind ewig gesessen - und im endeffekt hab i keine ahnung warum bei der win schüssel das alles ned gangen ist.
gut - nun zur nächsten seite
sie geht wieder nicht - bin hab alles auskommentiert um rauszufinden an welchem befehlt es liegt.
$param=<STDIN>;
-> wenn der page mit method=post werte übergeben werden ... wie übernehme ich diese?
mit dem Befehl, bleibt zur Abwechslung mal wieder alles weiss. Dazu sollten die Infos zur DB nicht mehr nötig sein oder? falls doch muss ich erst fragen - wie gesagt - bin ned der admin.

plz tell me how to solve my problem :((
thxal
Uurtyp

_m3 26.09.2002 12:36

Also händisch würde ich das nicht machen. Dafür gibt es bereits sehr gute Module.
Ich würd entweder die CGI.pm oder die cgi-lib.pl <http://cgi-lib.berkeley.edu/> verwenden, um die Parameter zu parsen.
Die erkennen automatsich, ob es sich im GEt oder POST Daten handelt und liefern dir alles schön in einem Hash zurück.

CGI.pm hat auhc noch den Vorteil, dass man das Script auch von der Kommandozeile aufrufen kann undihm dort die Parameter spezifizieren kann - suuuper zum Testen.


HTH

Uurtyp 26.09.2002 12:38

ahh ok
na dann werd ich mir die CGI.pm mal ansehen - wo find ich die am schnellsten?

mfg Uurtyp

_m3 26.09.2002 13:13

http://stein.cshl.org/WWW/software/CGI/
http://theoryx5.uwinnipeg.ca/mod_per...h?distinfo=742

Uurtyp 26.09.2002 22:52

super danke
dann werde ich mir das morgen gleich zu gemüte führen - heute ist es mir zu spät ;)
thx jedenfalls

Uurtyp 01.10.2002 23:36

hey cool - ja das funktioniert einwandfrei.

hät da noch eine Frage. Hast vlt - oder jmd anderer - auch ahnung wie ich mir in Perl eine Liste aller files bzw eine Liste aller directories in einem beliebigen DIR ausgeben lassen kann?

Lösung für die Files im aktuellen verzeichnis hab ich .... falls interesse besteht:

@files = glob("*.*");

funzt in win und linux
aber ich find nicht heraus wie ich diesen - oder einen anderen - Befehl anwenden muss, um die files aus einem subdir anzeigen zu können.

Zu den directories hät ich auch nen ansatz - ich bilde mir ein mal was von einem "System()" gehört zu haben. Das man mit dem irgendwie normale Linux ausführen kann - nur wie, ich finds nimma.
und wie geht das unter win?
*helpplz*
*thx*
mfg
Uurtyp

_m3 02.10.2002 00:51

perldoc -f readdir
und
perldoc -f -e
sollten Dir alle Infos liefern.

Uurtyp 02.10.2002 08:09

ah ok danke *anschau*

danke für die ganzen Infos!

mfg
Uurtyp

_m3 02.10.2002 08:42

no prob :)

Uurtyp 17.10.2002 15:56

hmmm also ganz klar komm i trotzdem noch ned damit
ich mein - readdir is echt genial
weils mir alles so ausspuckt wie ich will
nur
ich möcht directories als einen link als files ... und wie kenn ich damit auseinander, ob es ein dir od ein file is ( abgesehen davon möcht ich die dirs . und .. nat auch nicht ...)

ich hab derzeit:

$dir = "./Downloads";

opendir(DIR, $dir) || die "konnte $dir nicht öffnen: $!";
@files = readdir(DIR);
closedir DIR;

damit listet er mir brav absolut alles auf - von . über alle dirs bis zu allen files.

ich möcht jetzt aber nur die dirs haben
bzw - es wird im endeffekt nur dirs geben -> kann er auch alles auflisten ... jedenfalls möchte ich, dass die directories verlinkt werden auf die aktuelle seite, und nur den directory name als argument.
-> downloads.cgi?dir=$dir
wäre cool wenn du mir da weiterhelfen könntest.
filehandling und cookies killen mich in perl - find ich einfach behindert.
danke nomal

käptn 17.10.2002 17:10

Gibt's sowas wie isdir() und foreach() in Perl?

~

_m3 17.10.2002 17:54

isdir()
-d
siehe auch perldoc -f -d

foreach()
Code:

my @array = qw{ a b c d e f };
for (@aray) {
    print "$_\n";
}

Output: abcdef

Uurtyp 21.10.2002 11:24

leute - tut echt leid - aba ich komm damit nicht zurecht.
ich möchte doch einfach nur eine Funktion, die mir aus dem directory ./Downloads alle subdirs auflistet. und eine weitere, die mir aus dem aktuellen verzeichnis alle files auflistet.
und zwar so, dass dann immer nur der genaue name ausgegeben wird.
ich hatte es schon, dass dann zB wenn das subdir von Downloads "haha" heisst, dass dann als subdir ./Downloads/haha/ ausgegeben wurde. aber das ist uninteressant - ich brächte dann nur das "haha"

plz help - ich sitz da schon stunden und ich glaub ich verrenn mich da komplett und such in die verkehrte richtung :((

thx
ein - verzweifelter - Uurtyp

_m3 21.10.2002 13:10

Code:

sub dirs {
        my $dir = "./Downloads";

        opendir(DIR, $dir) || die "konnte $dir nicht öffnen: $!";
        my @files = readdir(DIR);
        closedir DIR;

        foreach (@file) {
                next if ($_ eq "." or $_ eq "..");
                print "DIR: $_\n" if( -d $dir/$_ );
        }
}

sub files {
        my $dir = "./Downloads";

        opendir(DIR, $dir) || die "konnte $dir nicht öffnen: $!";
        my @files = readdir(DIR);
        closedir DIR;

        foreach (@file) {
                next if ($_ eq "." or $_ eq "..");
                print "FILE: $_\n" if( -f $dir/$_ );
        }
}


Uurtyp 24.10.2002 17:07

super danke

also zumindest das mit den dirs hatte ich schon fast so ;)

ich werds heute abend oder morgen gleich probieren. Danke jedenfalls schon mal dafür.

mfg
ein - hoffender - Uurtyp ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag