Problem mit Fileupload.pm
Christian
- perl
0 Klaus Mock0 Christian0 Christian
Guten Morgen
Ich habe ein Problem mit der benutzung des Fileupload Moduls.
$upload->writefile("myfile","..\data\".$file{"filename"});
dieser Aufruf erzeugt folgenden Fehler:
"Can't use an undefined value as a HASH reference at /usr/lib/perl5/site_perl/5.6.0/Fileupload.pm line 120. "
die Zeile lautet:
return ($name ? %{$formdata->{$name}} : keys %{$formdata});
Die Fehlermeldung verwirrt mich allerdings.
Mein Verständnis der Zeile:
wenn $name nicht NULL ist, dann gib $formdata{$name} zurück, wenn doch gib alle Schlüssel aus %formdata zurück. Meines Verständnisses nach, ist $name allerdings die einzige "Hash Reference" in dieser Zeile. Kann mich bitte jemand korigieren ?
Das Problem trat lokal schon mal auf, was sich dann allerdings nach einem Server Neustart erledigt hatte. Wie gestalte ich den Methodenaufruf nun, wenn ich das ganze auf einem Webserver laufen lassen möchte ?
gruss Christian
Hallo,
return ($name ? %{$formdata->{$name}} : keys %{$formdata});
wenn $name nicht NULL ist, dann gib $formdata{$name} zurück, wenn doch gib alle Schlüssel aus %formdata zurück. Meines Verständnisses nach, ist $name allerdings die einzige "Hash Reference" in dieser Zeile. Kann mich bitte jemand korigieren ?
IMHO ist dieser Code nicht wirklich krisensicher, da nur überprüft wird, ob $name übergeben wurde (mehr oder weniger), aber nicht ob es auch ein passendes Hash-Element gibt, und dieses auch eine Referenz auf ein weiteres Hash ist.
Vielleicht wäre
return ( ref($formdata->{$name}) eq 'HASH' ? %{$formdata->{$name}} : keys %{$formdata});
besser. Aber ich will mich nicht unbedingt in fremden Code einmischen;-)
Grüße
Klaus
Hi Klaus,
danke dir für deine Bemühungen.
return ( ref($formdata->{$name}) eq 'HASH' ? %{$formdata->{$name}} : keys %{$formdata});
Das Problem ist nur, dass ich nicht der admin dieses webservers bin und demnach nicht alle 2 minuten in der Fileupload.pm etwas ändern kann. Ich stecke da ein wenig in der Zwickmüle (Fehler in meinem upload script suchen : Fehler in Fileupload.pm suchen)
Ich denke mit deinem Fix verhindere ich zwar die Fehlermeldung, glaube allerdings, dass ich dadurch die Funktionalität in diesem Fall trotzdem nicht hinbekomme.
Habe zwischenzeitlich versucht, mir einzelne Variablen in eine Textdatei schreiben zu lassen, doch auch die Zeilen...
open (FILE, ">>./vier.txt");
print FILE "moin";
close (FILE);
...funktionieren nicht wirklich. Ich habe mir überlegt, dass eventuell die Rechte auf dem Server für mein Vorhaben nicht richtig verteilt wurden. Habe alle Dateien auf chmod755.
Mein Wissen über WebServer ist sehr beschränkt. Bin dankbar für jede Hilfe.
Gruss Christian
nachtrag:
habe den fehler gefunden. muss mich für die vergeblichen mühen entschuldigen. hatte nen falschen namen für das inputfeld übergeben.
nun hat sich mein zweiter verdacht jedoch trotzdem bestätigt. meine neue Fehlermeldung lautet "Permission denied".
Liegt das an meinem Perl Script, oder muss ich mich dafür an meinen Webspace Provider wenden ?
gruss Christian
Hallo,
nun hat sich mein zweiter verdacht jedoch trotzdem bestätigt. meine neue Fehlermeldung lautet "Permission denied".
Liegt das an meinem Perl Script, oder muss ich mich dafür an meinen Webspace Provider wenden ?
Das script versucht irgendwo hin zu schrieben, wo es nicht darf.
Normalerweise läuft der Webserver unter einem user-account der so gut wie keine Rechte hat (nobody vielleicht). Meist sind für diesen User auch die Rechte für das Schreiben von Dateien verwehrt. Sollte dies jedoch nötig sein, so muß der Provider diese Rechte für (meist nur ausgesuchte Verzeichnisse) freigeben. Wende Dich daher an Deinen Provider.
Grüße
Klaus
ok danke für die hilfe, zu guter letzt klappte es dann doch noch :-)
gruss Christian