Detta är tänkt att vara en liten handledning som försöker förklara vad ett CGI-skript är och hur man installerar ett på en server. Den är inriktad på nybörjare på hemsidan, utan tidigare erfarenhet av CGI-skript. Ingen UNIX-erfarenhet krävs och det antas att du bara kommer åt servern via FTP och inte med telnet.
Vad är ett CGI-script
Bara så att du vet vad du faktiskt har att göra med så kan en kort introduktion av vad ett CGI-skript faktiskt vara ett bra ställe att börja. För det första så är CGI inte ett programmeringsspråk. CGI är en förkortning för ”Common Gateway Interface”, och det är ett sätt för program och skript på webbservern att kommunicera med webbläsaren (lätt förklarat).
Vanligtvis så görs ett CGI-skript med Perl, vilket är ett tolkat skriptspråk, mycket vanligt i UNIX-operativsystemet. CGI-skript kan dock skrivas på vilket språk som helst, till exempel C++ (men då ska det kallas ett CGI-program, eftersom det är kompilerat och inte längre ett skript).
I den här handledningen kommer vi att ta itu med CGI-skript gjorda med Perl (som är det vanligaste språket som används för CGI-skript). Ett sådant skript är helt enkelt bara en textfil med ett filnamn som slutar på .pl eller .cgi.
En viktig aspekt att komma ihåg är att CGI-skript är skript på serversidan, vilket innebär att skripten exekveras på servern och endast resultatet (utdata) från skriptet visas i webbläsaren. Jämför det med JavaScript, där själva skriptet laddas ner på en HTML-sida och körs i användarens webbläsare (skript på klientsidan).
Krav
Det första du bör kontrollera när du funderar på att använda ett CGI-skript på din hemsida, är att se till att ditt webbhotell stödjer CGI-skript och att du har tillstånd att använda dem. Om du har lagt märke till en katalog som heter cgi-bin när du laddar upp dina HTML-filer, då kan du helt säkert använda CGI-skript.
Du behöver också några mer grundläggande saker som en textredigerare för att redigera skriptet (anteckningsblocket är bra) och ett FTP-program (vi använder gratis WS FTP LE i det här exemplet).
Konfiguration
Nu till det viktigaste, en av de saker som vanligtvis är källan till fel, konfigurationen av skriptet.
Öppna skriptet i anteckningsblocket eller din favorittextredigerare. Observera att det måste vara en ASCII-textredigerare som sparar som ren text, utan någon formatering, som sådant som Word och andra ordbehandlare gör.
På den första raden i skriptet ser du något sånt här:
#!/usr/bin/perl
Detta är sökvägen till perl-kompilatorn (eller snarare tolken) på servern. Detta måste ändras för att ställas in med den server du ska använda skriptet på. Förutom #!/usr/bin/perl är det vanligtvis #!/bin/perl eller #!/usr/local/bin/perl. Det bästa sättet att ta reda på den korrekta sökvägen är att kontrollera dina webbvärdars supportsidor eller titta på den första raden av tidigare installerade och fungerande skript (vanligtvis finns det något slags test Hello World CGI-skript installerat som standard).
Nästa steg är att noggrant läsa dokumentationen för skriptet och se vilka andra saker som ska konfigureras. Vanligtvis finns variabler som behöver konfigureras överst i skriptet. Läs eventuella kommentarer för att se vad du ska göra. Kommentarer i Perl är rader som börjar med #-tecknet (enda undantaget är den första raden).
En vanlig sak är att sökvägen till din webbplats måste anges. Sökvägen är inte samma sak som URL:en. Även om din URL kan vara www.foobar.com, så kan sökvägen till webbplatsen på serverns hårddisk vara ungefär så här:
/disk5/home/f/foobar/htdocs/
Observera att ovanstående bara är ett exempel, det fungerar inte på din server. Beroende på FTP-programvaran och serverinställningarna kan du kanske se hela sökvägen när du ansluter till webbplatsen med FTP. Kolla annars webbhotellets supportsidor.
Installation
Nu är det dags att faktiskt lägga skriptet på din server och ställa in rätt behörigheter för det. Detta görs med ditt favorit-FTP-program.
När du laddar upp CGI-skript så måste du använda ASCII-läge (inte binärt). Detta beror på att UNIX och Windows använder olika radbrytningar, men låt oss inte gå in på det här.
Bilden visar hur överföringsläget kan väljas i WS FTP.
WS FTP: ASCII-överföring
Vanligtvis finns det bara en plats där CGI-skript kan köras på servern, och det är i cgi-bin-katalogen. Det är där du ska ladda upp skriptet om ditt webbhotell inte har instruerat något annat.
Efter att ha laddat upp skriptet så måste du ställa in rätt behörigheter för själva skriptet och alla andra kataloger och filer som det fungerar med.
Behörigheter ställs in med ett UNIX-kommando som heter chmod, men du behöver inte vara en UNIX-guru för att använda det. Den kan användas direkt via din FTP-klient istället.
Skript bör ha en behörighet på 755 (chmod 755). I WS FTP, högerklicka på filen och välj chmod, och följande fönster dyker upp.
Exemplet nedan är för tillstånd 755.
WS FTP: chmod 755
Filer som bör skrivas till, eller kataloger själva, som skriptet använder för att spara filer i, bör ställas in på chmod 777. 777 betyder att alla rutor ska vara markerade.
Okej, det är det. Förhoppningsvis kommer du att ha ett fungerande CGI-skript igång nu…
Om det inte fungerar…
Som oerfaren användare finns det många fällor att falla i. Det tråkiga är att när något går fel är det väldigt sällan uppenbart vad det beror på. Men det finns några saker som kan hjälpa dig…
Här är några vanliga fel och vad som kan orsaka dem.
403 Tillstånd nekad
Fel 403 är en säker sak; det beror på att du har glömt att ändra filbehörigheterna för skriptet. Ställ in alla .pl- och .cgi-filer till chmod 755 för att vara säker.
404 Filen hittades inte
Du angav helt enkelt fel URL. Den faktiska filen (d.v.s. skriptet) hittades inte. Detta är samma fel som du får när du klickar på trasiga länkar.
500 Internt serverfel
Det här är det värsta, tyvärr är det också det vanligaste. Det är ett fel i själva skriptet. Gå igenom alla steg i konfigurations- och installationssektionen igen och bekräfta att de är korrekta, det borde hjälpa dig att spåra de flesta vanliga felen.
Att försöka hitta källan till ett fel kan vara lite knepigt, men det finns några användbara saker som kan vara tillgängliga för dig.
Om du har tillgång till loggfilerna på din server, hitta en fil som heter error_log och kolla i slutet av den filen. När ett skript misslyckas med att köras loggas alla fel i den filen och de bör ge dig en ledtråd om vad som händer.
De flesta webbhotell har supportsidor med vanliga frågor och instruktioner om CGI-skript. Det kan finnas vissa saker som är specifika för just ditt webbhotell, så läs igenom allt du kan hitta. Läs också dokumentationen till manuset mycket noggrant. Annars får du reda på tidigare än du tror vad RTFM betyder när du frågar manusförfattaren om något som dokumentationen täckte.
Ok, det är allt. Jag hoppas att du tyckte att denna lilla handledning var användbar…
Skrivet av Stefan Pettersson, 10 juli 2000.