CGI scripts op uw homepage

CGI scripts op uw homepage

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:

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

  1. Het is belangrijk dat de scripts een Content-type verklaring bevatten
  2. De ^M die eventueel onstaat door op een niet unix platform te werken kan eenvoudig verwijderd worden door
    cat eenscript | tr -d ^M > eenbeterscript
    Die ^M maak je door achtereenvolgens Ctrl-V en Ctrl-M in te tikken (op linux)
  3. Wat permissions betreft: alle gebruikersfolders- en bestanden
      moeten als user de eigen username hebben en als groep de groep users (niet: www-data)
      Dat is eenvoudig te controleren met
      ls -alR /users/u/username
      Dat is aan te passen met
      chown username:users /users/u/username -R
      (voor de username zal dat moeten gedaan worden door een systeembeheerder)
    • Mogen enkel beschrijbaar zijn door de owner, dit is de gebruiker
      Dat is eenvoudig te controleren met
      ls -alR /users/u/username
      Dat is aan te passen met
      chmod wo-w /users/u/username -R
  4. Op volgende pagina vindt u werkende voorbeeldscripts in Perl, Python en bash.
    cgi_sample_scripts.txt.
  5. Als je contact opneemt met de helpdesk i.v.m. cgi-problemen geef dan zeker de url van je probleemscript mee, maar ook de code in bijlage.

 

Het uitvoeren van het script vanaf de Unix-prompt lukt niet:

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/