Wątek zamknięty

Otwieranie plików w skryptach CGI

 
indris
Wdrażany
Liczba postów: 16
Post: #2

RE: Otwieranie plików w skryptach CGI


(12.11.2010 12:55)indris napisał(a):  Mam Windows 7 Home Premium i zainstalowany IIS 7.5.
Próbuję uruchomić skrypt, który napisany był w Perlu i działał poprawnie na serwerze linuksowym. W przeglądarce wpisuję

http://localhost/gamecgi/zgadywanka.cgi

Dostaję następujący komunikat:

Software error:
Niemożliwe otwarcie pliku słów at C:\inetpub\wwwroot\gamecgi\zgadywanka.cgi line 38.
For help, please send mail to this site's webmaster, giving this error message and the time and date of the error.

W wierszach 37 i 38 inkryminowanego skryptu jest:

$datafile="answers.dat";
open FH, $datafile or die "Niemożliwe otwarcie pliku słów";

Plik answers.dat istnieje w tym samym folderze co skrypt. Nadałem mu w Eksploratorze ( jak umiałem) wszystkie możliwe uprawnienia i to dla wszystkich zauważonych użytkowników. I klops.
Co mam zrobić, żeby skrypt był łaskaw otwierać plik ?
.

Znalazłem wyjście, dla tego skryptu, ale go nie rozumiem.

Okazało się, że "sekret" działania skryptu polegał na tym, że do tego samego pliku należało się odwoływać raz przez jego "gołą" nazwę a innym razem przez względną ścieżkę.
Tak więc: w procedurze
sub newgame {
my ($datafile, @answers,$index1, $i, $raport);
$datafile="$Prefiks/answers.dat";
if(-e $datafile) { # DODANE 14.11.2010
open FH, $datafile or die "Niemożliwe otwarcie pliku słów";
@answers = <FH>;
close (FH);
$raport = " Odpowiedzi wczytano z pliku $datafile";
} else {
@answers = ("lemur", "sifaka", "indris", "wari", "katta"); # UWAGA zastępstwo
$raport = " Odpowiedzi ustawiono w tablicy (";
for($i = 0; $i < @answers; $i++) {
$raport .= " $answers[$i]";
}
$raport .= " )";
}
srand(time ^ $$);
$index1 = $#answers * rand;
$TheAnswer = $answers[$index1];
chomp($TheAnswer);
$TheMisses = "-";
$TheHits = "";
for($i = 0; $i < length($TheAnswer); $i++) {
$TheHits .= "-";
}
displayresult("Start Gry: ".$raport); # UWAGA!!
}
plik został znaleziony dopiero wtedy, gdy nazwa pliku była dopełniona nazwą katalogu (zmienna $Prefiks)

Natomiast w konstrukcji

if(-e "$Prefiks/hang${len}.gif") {
print
#CHOLERA $Co->img( {-src=>"$Prefiks/hang${len}.gif",
$Co->img( {-src=>"hang${len}.gif",
-align=>'left', -vspace=>10, -hspace=>1}
);
} else {
print"<h3> Nie widać pliku: ", "$Prefiks/hang${len}.gif</h3>";
}

przy sprawdzaniu istnienia pliku trzeba było użyć ścieżki, natomiast przy znaczniku img nie można było jej użyć.

Adres wpisany do przeglądarki był: http://localhost/gamecgi/mikrozgadywankaWR.cgi

Niby więc wszystko jest OK, ale skrypt przestał być przenośny, bo na serwerze linuksowym chyba by ten skrypt nie zadziałał. tak jak skrypt z serwera linuksowego nie chciał działać u mnie.

Może ktoś umie wyjaśnić to zjawisko ?

16.11.2010 01:27

Znajdź wszystkie posty użytkownika
Wątek zamknięty


Wiadomości w tym wątku
RE: Otwieranie plików w skryptach CGI - indris - 16.11.2010 01:27
Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Zapisywanie i otwieranie plików w Windows 7 qwertyx12 0 3.250 10.02.2011 21:22
Ostatni post: qwertyx12
Rozwiązany Otwieranie plików przez Worda (rozwiązany) kamisiu91 7 11.896 02.05.2010 17:10
Ostatni post: Portator
Spowolnione/podwójne otwieranie okien sth01 7 8.943 13.01.2010 23:12
Ostatni post: Nostromo
« Starszy wątek | Nowszy wątek »

Temat został oceniony na 0 w skali 1-5 gwiazdek.
Zebrano 0 głosów.