perl -w -w kalder noget debug information. Du skal køre det fra en kommandolinie for at se output, de fleste web server reutrnerer en Internal server error hvis din error handling ikke fanger den eller hvis dine headers er forkerte.
Du kan hente perl fra www.activestate.com så kan du køre det på din wintel maskine, udover nogle småting så kører det ens. Om ikke andet så får du tjekket for syntaks fejl. Husk iøvrigt at uploade med ascii mode og husk den første linie i dit perl script indeholder stien til perl En sidste ting som er afgørende er at du printer en Content-type header ellers kaster de fleste webservere op.
Jeg kører det på en Perl fra http://www.activestate.com Men her kører det fint, hvilket det ikke gør på udbyderens server. Derfor vil jeg gerne have fejlmeddelelsen fra udbyderens server. Kan jeg det fra Perl scriptet?
Her er banditten. Fejlen sker når man vil oprette eller redigere.
#!/usr/bin/perl # Set Variables $newsfilereal = "/WEBSERVERS/WWW.site.DK/public_html/polystan/news.txt"; $cgiurl= "newsadmin.pl";
### PC: ### # @time = localtime; # will give you a date. Here's how to get all the info: # $time[0] # is the seconds # $time[1] # is the minutes # $time[2] # is the hours # $time[3] # is the monthday beginning with 1 # $time[4] # is the monthnumber beginning with 0 # $time[5] # is the year (add 1900) # $time[6] # is the week day with 0 for Sunday # $time[7] # is the day of the year # $time[8] # is a flag indicating whether or not it's daylight savings time # $Dato = sprintf "%02d-%02d-%d", $time[3], $time[4] + 1, $time[5] + 1900; $Dato = "";
# Get the input sub ReadParse { local (*in) = @_ if @_; local ($i, $key, $val);
if ( $ENV{'REQUEST_METHOD'} eq "GET" ) { $in = $ENV{'QUERY_STRING'}; } elsif ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); } else { # Added for command line debugging # Supply name/value form data as a command line argument # Format: name1=value1\&name2=value2\&... # (need to escape & for shell) # Find the first argument that's not a switch (-) $in = ( grep( !/^-/, @ARGV )) [0]; $in =~ s/\\&/&/g; }
sub ShowList { # Open News file open (FILE,"$newsfilereal") || die "Can't Open $newsfilereal: $!\n"; @LINES=<FILE>; close(FILE); $SIZE=@LINES;
sub Slet { open (FILE,"$newsfilereal") || die "Can't Open $newsfilereal: $!\n"; @LINES=<FILE>; close(FILE); open (News,">$newsfilereal") || die "Can't Open $guestbookreal: $!\n"; foreach $i (0 .. $#LINES) { if ($i ne $FORM{'id'}) { print News "$LINES[$i]"; } } close (News); }
Ok, det er enten fordi du ikke har oprettet news.txt eller fordi du har stien forkert - husk unix er følsom overfor store/små bogstaver. En anden ting kunne være rettigheder, webserveren kører sikkert som bruger www eller lign. og når du uploader har du et andet brugernavn, scripts som køres af webserveren har derfor ikke som standard rettigheder til de filer du opretter du kan chmod 777 dem el. lign. (tjek evt. med dit webhotel hvordan der konfiguration er).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.