Avatar billede med Nybegynder
18. februar 1999 - 00:00 Der er 9 kommentarer og
1 løsning

Fejl medd. fra Perl compiler

Hvordan får jeg Perl til at fortælle mig hvad der gik galt under kompileringen?
Avatar billede ball Nybegynder
18. februar 1999 - 13:47 #1
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.
Avatar billede med Nybegynder
18. februar 1999 - 14:07 #2
Jeg tester mit Perl på et WebHotel® så jeg har vel ikke adgang til den slags?

Er der andre måder at gøre det på?
Her tænker jeg på om det kan gøres fra Perl scriptet?
Avatar billede ball Nybegynder
18. februar 1999 - 14:13 #3
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.
Avatar billede med Nybegynder
18. februar 1999 - 14:20 #4
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?
Avatar billede ball Nybegynder
18. februar 1999 - 17:54 #5
Prøv lige at poste dit perl scipt eller i det mindste det output du for ved at køre det fra kommandolinien.
Hvilken webserver kører din udbyder med ?
Avatar billede med Nybegynder
18. februar 1999 - 18:02 #6
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 = "";

# Done
##############################################################################

# 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;
    }
             
    @in = split(/&/,$in);
             
    foreach $i (0 .. $#in) {
        # Convert plus's to spaces
        $in[$i] =~ s/\+/ /g;
             
        # Split into key and value.
        ($key, $val) = split(/=/,$in[$i],2);
        # splits on the first =.
             
        # Convert %XX from hex numbers to alphanumeric
        $key =~ s/%(..)/pack("c",hex($1))/ge;     
        $val =~ s/%(..)/pack("c",hex($1))/ge;
             
        # Associate key and value. \0 # is the multiple separator
        $in{$key} .= "\0" if (defined($in{$key}));
        $in{$key} .= $val;

        $FORM{$key} = $val;       
        }
        return length($in);
}

sub Header {
    print "Content-type: text/html\n\n";
    print "<HTML>\n";
    print "<HEAD>\n";
    print " <TITLE>NewsAdmin</TITLE>\n";
    print "</HEAD>\n";
    print "<BODY BGCOLOR=\"#ffffff\" TEXT=\"#000000\">\n";
}

sub Footer {
    print "<P><A HREF=\"$cgiurl?brugernavn=$FORM{'brugernavn'}&adgangskode=$FORM{'adgangskode'}\">NewsAdmin</A>\n";
    print "</BODY>\n";
    print "</HTML>\n";
}

sub ShowList {
    # Open News file
    open (FILE,"$newsfilereal") &#124;&#124; die "Can't Open $newsfilereal: $!\n";
    @LINES=<FILE>;
    close(FILE);
    $SIZE=@LINES;

    print "<A HREF=\"$cgiurl?brugernavn=$FORM{'brugernavn'}&adgangskode=$FORM{'adgangskode'}&Action=opret\">Opret</A>\n";
    print "<TABLE>\n";
    foreach $i (0 .. $#LINES) {
        @Nyhed = split(/=#=/, $LINES[$i]);
        $Overskrift = $Nyhed[0];
        $DatoStr = $Nyhed[1];
        if ($DatoStr eq "") {
            $DatoStr = $Dato
        }
        $Tekst = $Nyhed[2];

        print " <TR>\n";
        print "  <TD ALIGN=\"right\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><A HREF=\"news.pl?Action=$i\">Vis</A></FONT></TD>\n";
        print "  <TD ALIGN=\"right\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><A HREF=\"$cgiurl?brugernavn=$FORM{'brugernavn'}&adgangskode=$FORM{'adgangskode'}&Action=edit&id=$i\">Edit</A></FONT></TD>\n";
        print "  <TD ALIGN=\"right\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><A HREF=\"$cgiurl?brugernavn=$FORM{'brugernavn'}&adgangskode=$FORM{'adgangskode'}&Action=slet&id=$i\">Slet</A></FONT></TD>\n";
        print "  <TD ALIGN=\"right\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">$DatoStr</FONT></TD>\n";
        print "  <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">$Overskrift</FONT></TD>\n";
        # print "  <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">$Tekst</FONT></TD>\n";
        print " </TR>\n";
    }
    print "</TABLE>\n";
}

sub OpretEdit {
    print "<FORM METHOD=\"get\" ACTION=\"$cgiurl\">\n";
    print " <INPUT TYPE=\"hidden\" NAME=\"brugernavn\" VALUE=\"$FORM{'brugernavn'}\">\n";
    print " <INPUT TYPE=\"hidden\" NAME=\"adgangskode\" VALUE=\"$FORM{'adgangskode'}\">\n";

    if ($Action eq "opret") {
        print " <INPUT TYPE=\"hidden\" NAME=\"Action\" VALUE=\"opret2\">\n";
    }
    if ($Action eq "edit") {
        print " <INPUT TYPE=\"hidden\" NAME=\"Action\" VALUE=\"edit2\">\n";
        print " <INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$FORM{'id'}\">\n";
        open (FILE,"$newsfilereal") &#124;&#124; die "Can't Open $newsfilereal: $!\n";
        @LINES=<FILE>;
        @Nyhed = split(/=#=/, $LINES[$FORM{'id'}]);
        $Overskrift = $Nyhed[0];
        $Dato = $Nyhed[1];
        $Tekst = $Nyhed[2];
        $Tekst =~ s/<BR>/\n/g;
    }
    print "<TABLE>\n";
    print " <TR>\n";
    print "  <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">Dato</FONT></TD>\n";
    print "  <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><INPUT TYPE=\"text\" NAME=\"Dato\" VALUE=\"$Dato\"></FONT></TD>\n";
    print " </TR>\n";
    print " <TR>\n";
    print "  <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">Overskrift</FONT></TD>\n";
    print "  <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><INPUT TYPE=\"text\" NAME=\"Overskrift\" VALUE=\"$Overskrift\"></FONT></TD>\n";
    print " </TR>\n";
    print " <TR>\n";
    print "  <TD VALIGN=\"top\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">Tekst</FONT></TD>\n";
    print "  <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><TEXTAREA NAME=\"Tekst\" ROWS=\"8\" WRAP>$Tekst</TEXTAREA></FONT></TD>\n";
    print " </TR>\n";
    print " <TR>\n";
    print "  <TD>&nbsp;</TD>\n";
    print "  <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><INPUT TYPE=\"submit\" VALUE=\"Udfør\"></FONT></TD>\n";
    print " </TR>\n";
    print "</TABLE>\n";
}

sub Opret2 {
    open (FILE,"$newsfilereal") &#124;&#124; die "Can't Open $newsfilereal: $!\n";
    @LINES=<FILE>;
    close(FILE);
   
    open (News,">$newsfilereal") &#124;&#124; die "Can't Open $guestbookreal: $!\n";
   
    $Overskrift = $FORM{'Overskrift'};
    $Dato = $FORM{'Dato'};
    $Tekst = $FORM{'Tekst'};
    for ($Tekst) {
        s/^\s+//;
        s/\s+$//;
    }
    $Tekst =~ s/\n/<BR>/g;

    print News "$Overskrift=#=$Dato=#=$Tekst\n";
    print News "@LINES";
   
    close (News);
}

sub Edit2 {
    open (FILE,"$newsfilereal") &#124;&#124; die "Can't Open $newsfilereal: $!\n";
    @LINES=<FILE>;
    close(FILE);
   
    open (News,">$newsfilereal") &#124;&#124; die "Can't Open $guestbookreal: $!\n";
   
    $Overskrift = $FORM{'Overskrift'};
    $Dato = $FORM{'Dato'};
    $Tekst = $FORM{'Tekst'};
    $Tekst =~ s/\n/<BR>/g;

    foreach $i (0 .. $#LINES) {
        if ($i != $FORM{'id'}) {
            print News "$LINES[$i]";
          }
        else {
            print News "$Overskrift=#=$Dato=#=$Tekst\n";
        }
    }
    close (News);
}

sub Slet {
    open (FILE,"$newsfilereal") &#124;&#124; die "Can't Open $newsfilereal: $!\n";
    @LINES=<FILE>;
    close(FILE);
    open (News,">$newsfilereal") &#124;&#124; die "Can't Open $guestbookreal: $!\n";
    foreach $i (0 .. $#LINES) {
        if ($i ne $FORM{'id'}) {
            print News "$LINES[$i]";
        }
    }
    close (News);
}

## Begin prog ##
&ReadParse;

$Action = $FORM{'Action'};

#if ($FORM{'brugernavn'} != "admin") {
#     if  $FORM{'adgangskode'} != "unicorn") {
#         &Header;
#         print "<FORM METHOD=\"get\" ACTION=\"$cgiurl\">\n";
#        print "<TABLE>\n";
#         print " <TR>\n";
#         print "  <TD><font face=\"Helvetica,Arial\" size=\"1\">Brugernavn</font></TD>\n";
#         print "  <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"text\" NAME=\"brugernavn\"></font></TD>\n";
#         print " </TR>\n";
#         print " <TR>\n";
#         print "  <TD><font face=\"Helvetica,Arial\" size=\"1\">Adgangskode</font></TD>\n";
#         print "  <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"password\" NAME=\"adgangskode\"></font></TD>\n";
#         print " </TR>\n";
#         print " <TR>\n";
#         print "  <TD>&nbsp;</TD>\n";
#         print "  <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"submit\" VALUE=\"Log ind\"></font></TD>\n";
#         print " </TR>\n";
#         print "</TABLE>\n";
#         print "</FORM>\n";
#         &Footer;
#     exit;
#     }
#}

if ($Action eq "") {
    &Header;
    &ShowList;
    &Footer;
}

if ($Action eq "opret") {
    &Header;
    &OpretEdit;
    &ShowList;
    &Footer;
}

if ($Action eq "opret2") {
    &Header;
    &Opret2;
    &ShowList;
    &Footer;
}

if ($Action eq "slet") {
    &Header;
    &Slet;
    &ShowList;
    &Footer;
}

if ($Action eq "edit") {
    &Header;
    &OpretEdit;
    &Footer;
}

if ($Action eq "edit2") {
    &Edit2;
    &Header;
    &ShowList;
    &Footer;
}
Avatar billede ball Nybegynder
18. februar 1999 - 18:28 #7
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).
Avatar billede med Nybegynder
19. februar 1999 - 11:03 #8
Du har nok ret. Jeg undersøger det og vender tilbage...

Kan du se hvad der er galt her:

if ($FORM{'brugernavn'} != "admin") {
    if $FORM{'adgangskode'} != "unicorn") {
        &Header;
        print "<FORM METHOD=\"get\" ACTION=\"$cgiurl\">\n";
        print "<TABLE>\n";
        print " <TR>\n";
        print " <TD><font face=\"Helvetica,Arial\" size=\"1\">Brugernavn</font></TD>\n";
        print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"text\" NAME=\"brugernavn\"></font></TD>\n";
        print " </TR>\n";
        print " <TR>\n";
        print " <TD><font face=\"Helvetica,Arial\" size=\"1\">Adgangskode</font></TD>\n";
        print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"password\" NAME=\"adgangskode\"></font></TD>\n";
        print " </TR>\n";
        print " <TR>\n";
        print " <TD> </TD>\n";
        print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"submit\" VALUE=\"Log ind\"></font></TD>\n";
        print " </TR>\n";
        print "</TABLE>\n";
        print "</FORM>\n";
        &Footer;
    exit;
    }
}
Avatar billede ball Nybegynder
19. februar 1999 - 12:00 #9
if ($FORM{'brugernavn'} != "admin") {
if $FORM{'adgangskode'} != "unicorn") {
Du mangler lige en (
i nummer 2 if
Avatar billede med Nybegynder
19. februar 1999 - 13:26 #10
Selvfølgelig!!!
grrrrrr #!¤%

tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester