Avatar billede hy Nybegynder
21. februar 1999 - 00:00 Der er 5 kommentarer og
1 løsning

UNIX og NT

Har et CGI script som køre perfekt på UNIX server, men skal nu skifte til Win NT, hvad er forskellen, scriptet køre ikke på NT, får følgende fejl :
%1 is not a valid Windows NT application.

Avatar billede long Nybegynder
21. februar 1999 - 11:36 #1
Prøv at poste den del af koden som fejler så vi kan kigge på det.
Avatar billede ball Nybegynder
21. februar 1999 - 12:40 #2
Er det Perl ?
Så skal du have Perl installeret og den rette ext. associeret med perl.
Tjek også din Content-type header, ikke alle web servere er lige glade for den.
En tredje ting kan være stien til filer, nogle NT webservere starter scriptet i et andet dir end du har lagt det, hvorfor absolutte stier kan hjælpe.
Prøv også at køre scriptet på kommando prompt med perl -w scriptnavn
Avatar billede long Nybegynder
21. februar 1999 - 12:56 #3
Det kan evt. hjælpe at installere http://www.activestate.com/
Avatar billede hy Nybegynder
21. februar 1999 - 21:30 #4
Ang. absolutte stier, er det http://etsted/enmappe/enfil.html
Jeg kan ikke vedhæfte scriptet ??????????? så her er den som den køre på UNIX.

#!/usr/bin/perl

######### Chek for antal sendte bytes######################
if ( $ENV{'CONTENT_LENGTH'} > 1000 )

    {
        print<<CONTENT_LENGTH_FEJLMEDDELELSE;
        Content-type: text/html

        <HTML><BODY><h2>Fejl: Du må maksimalt sende 2000 bytes data</h2></BODY></HTML>
CONTENT_LENGTH_FEJLMEDDELELSE
return;
    }
######################################################
#Læsning af in data starter her

$in=<STDIN>;

##############################################################################
#Selv definerende funktion, der læser de fra browseren modtagne data
#og konverterer diverse specialkoder i URL-encoding til deres respektive tegn.

sub laesStandardInput
{
    my ($data) = $in;
    $data=~s/\+/ /g;
    $data=~s/\%([A-F0-9]{2})/pack('C', hex($1))/eg;
    return $data;

}



$indata = laesStandardInput();
%inddataarry=split('[=&]',$indata);
@noegle=keys(%inddataarry);
####################################################
#
#Splitter indataarry
#
$ord = ($inddataarry{$noegle[0]});
#
#
############### validering af url ####################
$ord=lc($ord);
$fejl = '';
$antal = length($ord);

if ($antal==0)
{
$fejl = "Fejl der er ikke indtastet søgeord !!<br>";

}

$chekFejl = length($fejl);
if ($chekFejl > 0)
{

print<<STOP1;
Content-type: text/html


<html>

<head>
<title>Søgeside</title>
</head>

<body>
Test <strong>$fejl</strong><br>
<HR>
<strong>Ny søgning</strong>

<form method="POST" action="/cgi-bin/soeg1.pl">
Indtast søgeord&nbsp; <input type="text" name="soegeord" size="20"><input type="submit" value="Søg"><input type="reset" value="Reset"></p>
</form>

ord -- $ord  in -- $in ---$indhold --- $starta -- $sluta<br>

</body>
</html>

STOP1

}
if ($chekFejl == 0)
{

################ læsning af fil ##################
@filer = (side1,side2,havn,havn2,kommune,hvidesande,handvrk,sondervig);
$fundene='';
$x=scalar(@filer);
$mange=0;

for ($y=0; $y <= $x ; $y++)
{
$indhold = '';


open (INDFIL,"< /home/yde/public_html/mappe/@filer[$y].html");


for ($i=0; $linie = <INDFIL> ;$i++)
{
    $indhold .= $linie;
}
  if ( $indhold =~/$ord/)
  {
  $indholdb=$indhold;
  $indhold=lc($indhold);
  $mange=$mange+1;
  ## Title##########################
  $start=index($indhold,title,0);
  $begynd=$start+5;
  $start=$start+6;
  $slut= index($indhold,title,$begynd);
  $laengde=($slut - $start)-2;
  $title=substr($indholdb,$start,$laengde);
  $title=ucfirst($title);
  ## Description ###################
  $starta=index($indhold,description,0);
  $begynda=$starta+22;
  $sluta=index($indhold,'"',$begynda);
  $laengdea=$sluta - $starta;
  $laengdea=$laengdea-22;
  $besk=substr($indholdb,$begynda,$laengdea);
  $fundene.= "<a href=\"/mappe/@filer[$y].html\"> $title </a>  $besk<br><br>";

  }

}

$antalo = length($fundene);
$ordo='';
if ($antalo==0)
{
$ordo = "$ord";
}

{

print<<STOPZ;
Content-type: text/html


<html>

<head>
<title>Søgeside</title>
</head>

<body>
Resultat af søgning på <strong>$ord</strong><br>
<strong>$mange</strong> sider passer på søgning af <strong>$ord</strong><br>
<HR>
$fundene
<HR>
<strong>Ny søgning</strong>


<form method="POST" action="/cgi-bin/soeg1.pl">
Indtast søgeord&nbsp; <input type="text" name="soegeord" size="20" value="$ordo"><input type="submit" value="Søg"><input type="reset" value="Reset"></p>
</form>

ord -- $ord  in -- $in ---$indhold --- $starta -- $sluta -- $sti -- $fil --<br>

</body>
</html>

STOPZ

}

}
Avatar billede ball Nybegynder
21. februar 1999 - 23:08 #5
Har du fået installeret perl på din NT - og ændret filassociationer så det passer ?

Ellers er her to andre ting som er / kan være afgørende:

open (INDFIL,"< /home/yde/public_html/mappe/@filer[$y].html");

Sådan en børge giver helt sikkert problemer.
Den skal ændres til noget windows sjov a la c:\her ligger mine sider\

Den her

Content-type: text/html

Kan også give problemer på nogle webservere, men er strengt nødvendige på andre.
Avatar billede hy Nybegynder
22. februar 1999 - 11:33 #6
Jeg har ikke NT lokal, her køre jeg Win 95, og MPWS server, her køre den også OK, det er når jeg uploader til serveren hos min udbyder problemerne starter.
Med hensyn til stien til mappen kan jeg ikke bruge absolutte stier, jeg aner ikke hvor på udbyderens server min side ligger, derfor mener jeg det skal være den virituelle sti der skal angives.
Jeg vil kigge på Content-type.

Hyde
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