print.gif

 

Perl en CGI

CGI staat voor Common Gateway Interface.

CGI scripts zijn scripts die werken in combinatie met de webserver. In het geval van CGI is dit een UNIX server. CGI kan niet op een Windows webserver draaien.
Je kunt zo gegevens wegschrijven en later weer opvragen. De CGI-BIN is een beveiligde ruimte waar de gegevens worden verwerkt.

Als je bijvoorbeeld informatie uit een database wilt hebben, kan je dat via een cgi script uitlezen en weergeven. Je kunt cgi scripts dus gebruiken voor bijvoorbeeld een mailformulier, forum, gastenboek, enzovoorts. Dit kan inderdaad ook allemaal in php, het is maar net waar je beter in bent. CGI scripts zijn over het algemeen wel betrouwbaarder, maar PHP is makkelijker te leren. CGI wordt meestal geschreven in de taal Perl. Perl staat voor: Practical Extraction and Report Language.
Waar moet je absoluut rekening mee houden?

Als je CGI scripts naar je website gaat uploaden, moet je dit in ASCII doen. Dus niet in auto mode van je FTP programma, maar echt ASCII. Anders gaat het script niet werken... (vraag me niet waarom). Nog een reden waarom cgi scripts foutmeldingen geven nadat je de boel hebt geinstalleerd: je moet bestanden bepaalde rechten toekennen, anders kunnen er geen gegevens opgeslagen worden in de scripts. Je zal dan de foutmelding: 500 - Internal Server Error krijgen in de browser.

Over het algemeen hebben bestanden met extensie *.pl en *.cgi lees en uitvoerrechten nodig, dus zal je deze rechten moeten toekennen. Vaak staat in de uitleg van het cgi script dat je 755 moet instellen. Wat houdt dit in?
De eigenaar heeft alle rechten, de overige bezoekers hebben alleen lees- en uitvoerrechten.

Abracadabra? Wees niet bang, het instellen is eenvoudig. Elk ftp programma heeft de optie om het UNIX commando CHMOD (change mode) uit te voeren. In wsftp doe je het als volgt: je gaat op het bestand staan dat ge-CHMOD moet worden (wat een woord....) en in het rechter muisknopmenu zie je dan een optie: FTP commands staan. Onderaan zie je CHMOD staan. Daar kun je de opties aanvinken.

CGI scripts

Dit artikel beschrijft hoe u CGI-scripts moet installeren. Veel webmasters hebben op een gegeven moment de behoefte om interactieve elementen toe te voegen aan hun website. U kunt daarbij denken aan bijv. een forum, gastenboek of poll. Als u daarvoor een remote host neemt, is het opnemen van het forum, gastenboek, etcetera een kwestie van de HTML code in uw pagina plakken.

Het wordt wat moeilijker als u de scripts zelf wilt hosten. Dan moet u het script namelijk zelf gaan installeren.

Vaak zijn deze scripts CGI-scripts. CGI is zelf geen programmeertaal. CGI staat voor: Common Gateway Interface. Het is een standaard die het mogelijk maakt dat scripts en programma's op de server communiceren met de browser.

De meeste CGI-scripts zijn geschreven in de scripting-taal Perl. Dit artikel gaat dan ook alleen over CGI-scripts die geschreven zijn in Perl.

Verder is het belangrijk om te weten dat CGI-scripts server-side scripts zijn. Dat wil zeggen dat de scripts uitgevoerd worden op de server waarna het resultaat wordt teruggestuurd naar de browser. Server-side scripts vormen de tegenhanger van client-side scripts als bijv. Javascript. Deze scripts worden direct uitgevoerd door de browser.

Wat heeft u nodig?

Het belangrijkste dat u nodig hebt, is een host die CGI-scripts ondersteunt. Kijk op de homepage van uw homepage-provider of die dat inderdaad ondersteunt. Zoekt u een provider met CGI ondersteuning dan kunt u eens zoeken op: Freewebspace.net of op deze pagina. Verder heeft u een teksteditor nodig en een FTP programma.

Het script bewerken

Voordat u het script gaat uploaden naar de server moet u er eerst voor zorgen dat de verwijzingen in de Perl bestanden (deze hebben de extensie .pl) goed zijn. Open het Perl bestand in uw teksteditor (dus geen WYSIWYG editor als Word gebruiken).

De eerste regel van het script ziet er ongeveer zo uit:

#!/usr/bin/perl

Dit is het path naar de Perl interpreter op de server.
Deze verwijzing moet goed zijn anders kan het script niet "geinterpreteerd" worden.

U moet bij uw homepage-provider nakijken wat dit path precies moet zijn en - als het verschilt van de code hierboven - die code op de eerste regel zetten en de bovenstaande code verwijderen. Doe dat vervolgens bij alle .pl bestanden. Als de gegevens van uw homepage-provider overeenkomen met de code hierboven dan hoeft u niks te doen.

Andere Paths die ook wel voorkomen zijn bijv.:

#!/usr/local/bin/­perl#!/bin/perl

Daarna moet u in de documentatie die bij het script zit, nalezen of u nog meer dingen moet veranderen aan het script. Soms moet u nog ergens het path naar uw site opgeven. Dat is wat anders dan de URL van uw site.

Het path naar uw site kan er zo uitzien:

/home/www/­Jouwnaam/

Het path van uw site kunt u vaak zien als u verbinding maakt met de server via uw FTP programma. Als u het daar niet kunt zien, dan moet u weer bij uw homepage provider gaan kijken.

Ook moet u soms het path naar sendmail opgeven. Sendmail wordt door sommige scripts gebruikt om informatie naar uw of naar de gebruikers van het script (de bezoekers) te e-mailen.

Het path naar sendmail kan er zo uitzien:

/usr/lib/sendmail
of /usr/sbin/sendmail

Installeren

Nu wordt het dan echt tijd om het script te installeren. De eerste stap is om de bestanden te uploaden met behulp van uw FTP programma.

Let er op dat u bij het uploaden de .pl bestanden uploadt als ASCII en niet als Binary bestanden, anders kan het problemen geven. Alleen plaatjes moet u als binary bestanden uploaden (dus bijvoorbeeld: .gif en .jpg bestanden).

De scripts laadt u in de directory cgi-bin. Ddat is vaak de enige plaats waar u cgi-scripts kunt draaien, zeker bij gratis hosts.

Na het uploaden is het tijd om de permissions van de bestanden en directories vast te stellen. Met de permissions stelt u vast of gebruikers een bestand mogen lezen, schrijven of uitvoeren (read, write, execute).

Dat vaststellen van de permissions doet u met een UNIX commando dat chmod heet. Gelukkig hoeft u eigenlijk niets van UNIX te weten om dat commando toe te passen, omdat u dat eenvoudig kunt doen met uw FTP programma. De scripts hebben normaal gesproken permission 755, maar dat kan iets anders zijn. Raadpleeg daarvoor het script en de documentatie die daarbij zit.

Hoe u precies het commando chmod moet uitvoeren, hangt af van het FTP programma dat u gebruikt. Met LeechFTP, WS_FTP en CuteFTP - drie veelgebruikte FTP programma's - gaat dat als volgt:

LeechFTP: nadat u de bestanden hebt geladen, selecteert u de bestanden met de linker-muisknop. Daarna klikt u op de rechter-muisknop en kiest u set attributes. Dan kunt u onderin de permissies intypen, dus bijvoorbeeld 755.

WS_FTP: selecteer het bestand/de directory die u met chmod wilt bewerken door te klikken met de linker-muisknop. Nu klikt u op de rechter-muisknop en kiest u voor chmod (UNIX). Kijk op deze pagina om te zien hoe u de permissies dan verder instelt met WS_FTP.

CuteFTP: selecteer het bestand/de directory die die u met chmod wilt bewerken door te klikken met de linker-muisknop. Klik op de rechter-muisknop en kies voor Change file attributes. Kies daarna voor chmod (UNIX) en vervolgens krijgt u een scherm waar u de permissies in kunt typen/selecteren. Op deze pagina kunt u het nog eens nalezen.

Dat was het. Nu zou uw script moeten werken.

Foutmeldingen

Als het niet werkt en u een foutmelding krijgt, dan moet u even controleren welke foutmelding u krijgt:

403 Permission Denied

Als u dat krijgt, heeft u een fout gemaakt met het commando chmod. Controleer dan of alle bestanden de juiste permissions hebben.

404 File not Found

U heeft waarschijnlijk de verkeerde URL ingetypt.

500 Internal Server Error

Deze foutmelding komt het meeste voor. Er kan van alles mis zijn.
Controleer alles weer van voren af aan, dus: paths, URL's, uploaden (ASCII), chmod, etcetera.
Lees ook zeer nauwkeurig de instructies die bij het script zitten en doe alles precies zoals het daar staat.
Krijgt u dan nog steeds foutmeldingen, dan kunt u nog kijken bij de FAQ's van de maker van het script en van uw homepage provider.