CGI-scripts (Common Gateway Interface) zijn programma's die - net zoals HTML-documenten - op de server worden geïnstalleerd. Doorgaans worden ze gebruikt om de input van formulieren of 'clickable maps' te verwerken, maar ze kunnen worden ingeschakeld voor een brede waaier van opdrachten waarvan de auteur wenst dat ze door de gebruiker met behulp van de browser worden geïnitieerd: het raadplegen van een databank, het berekenen van een waarde, enz. CGI-scripts kunnen worden opgesteld in bijvoorbeeld Perl, C, C++, de Unix Bourne Shell (bash), de C Shell, enz. U kunt ze zelf schrijven of overnemen van anderen.
Gateway scripts bevinden zich gewoonlijk op systeemniveau. De eigenlijke CGI scripts dienen door de gebruiker in een eigen directory geplaatst te worden. Ze worden dan door de respectievelijke servers uitgevoerd. Ga als volgt te werk: Creëer in uw WWW-directory een subdirectory cgi-bin met het commando
mkdir ~/WWW/cgi-bin
en plaats de scripts in deze subdirectory.
Zorg ervoor dat de
permissies
als volgt zijn ingesteld:
$ chmod 711 .
$ chmod 711 WWW
$ chmod 711 WWW/cgi-bin
$ chmod 755 script.cgi
Het script zal worden uitgevoerd door middel van een URL van het volgende
type:
http://users.ugent.be/~gebruikersnaam/cgi-bin/script.cgi
Het script moet dan wel als extensie .pl, .py of .cgi dragen, anders wordt het
niet als dusdanig herkend. Eventuele
bestanden moeten enkel schrijf/leesbaar zijn voor uzelf.
Bij het gebruik van scripts is het mogelijk dat u op volgende foutmelding stoot:
'Internal Server Error
Error: Malformed header from script.'
Laat eerst uw script lopen aan de Unix-prompt vooraleer u het script via een WWW-browser aanspreekt. Dat geeft u al een idee van de fout. U doet dat met het commando
./naam_van_het_script
Algemene raadgevingen
cat eenscript | tr -d ^M > eenbeterscriptDie ^M maak je door achtereenvolgens Ctrl-V en Ctrl-M in te tikken (op linux)
ls -alR /users/u/usernameDat is aan te passen met
chown username:users /users/u/username -R(voor de username zal dat moeten gedaan worden door een systeembeheerder)
ls -alR /users/u/usernameDat is aan te passen met
chmod wo-w /users/u/username -R
Het uitvoeren van het script vanaf de Unix-prompt lukt niet:
#!/usr/bin/perl
Het uitvoeren van het script aan de Unix-prompt lukt wel maar u krijgt in uw Browser de Internal Server Error. Mogelijke oorzaken hiervan kunnen zijn:
Veel personen maken ook gebruik van CGI scripts (Common Gateway Interface) op hun homepage (bijvoorbeeld tellers die het aantal bezoekers registreren). Ook hier weer enkele links naar pagina's die u meer info bieden:
Let op, de scripts van 'Matt's Script Archive' bevatten een aantal security holes. Gebruik dus de goeie alternatieven op bv. http://nms-cgi.sourceforge.net/