Webserver CGI script – Perl
De uitleg op deze pagina beschrijft hoe je een extern programma zoals perl kan gebruiken als compiler bij een webserver via de cgi-bin.
Wat heb je nodig?
1) Perl (linux/windows)
Download & Installatie
Download het MSI (Win32 X86) bestand en installeer Perl:
Configuratie van Perl voor Apache
Om Perl te gebruiken en de “cgi-bin” folder te activeren moet je het configuratiebestand voor apache openen [ApacheFolder]\conf\httpd.conf.
CGI script folder:
Kijk of de cgi-bin folder goed staat ingesteld, meestal is dit de cgi-bin folder in de Apache folder:
ScriptAlias /cgi-bin/ "[ApacheFolder]/cgi-bin/"
De regel zorgt er voor dat als scripts uit de cgi-bin folder aangeroepen worden via de browser naar de juiste locatie verwijzen, bijvoorbeeld:
http://www.mijnwebsite.com/website/index.html, verwijst naar C:\WWW\websiteindex.html
http://www.mijnwebsite.com/cgi-bin/hallo.pl, verwijst naar [ApacheFolder]\cgi-bin\hallo.pl
CGI scripts verwerken:
Zoek het volgende stuk op, en voeg de tekst toe:
1 2 3 4 5 6 |
<Directory "[ApacheFolder]/cgi-bin"> Options +ExecCGI AllowOverride None Options None Require all granted </Directory> |
Hiermee geef je aan Apache aan dat er scripts uitgevoerd moeten worden in deze folder.
Optioneel: wil je ook CGI script uitvoeren in je webfolder (of andere delen van je webstructuur), voeg dan de dikgedrukte regel toe in de “directory” van je hoofdfolder (staat meestal onder “documentroot”)
CGI bestandextensies (optioneel):
Als je CGI scripts wil laten uitvoeren wanneer je een opgevraagd, kun je index.cgi toevoegen aan “DirectoryIndex”:
1 2 3 4 5 6 |
# DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # <IfModule dir_module> DirectoryIndex index.html index.php index.cgi </IfModule> |
CGI Handler:
De bestandextensie van Perl is: .PL
Ps: opzich maakt de bestand extensie voor Apache niet heel veel uit omdat het programma dat gestart moet worden IN het script staat, welke door Apache uitgelezen wordt!
Zoek het volgende op:
1 2 3 4 |
# To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # #AddHandler cgi-script .cgi |
1) Haal het hekje “#” er voor weg, zodat de regel geactiveerd word.
2) Vul de regel aan met de extensie van Perl: .pl
1 2 3 4 |
# To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # AddHandler cgi-script .cgi .pl |
Sla het bestand op en herstart Apache, vanaf nu kun je Perl scripts uitvoeren!
Testen van Perl
Om Perl te testen maak je een bestand aan: [ApacheFolder]\cgi-bin\hallo.pl met de volgende inhoud (perl script):
1 2 3 4 5 |
#![PerlFolder]\bin\perl.exe print "Content-type: text/html\n\n"; print "Hallo Wereld!<br>\n"; print "Mijn Perl script werkt!\n"; |
Als je nu via een internet browser naar je website cgi-bin folder gaat, bijvoorbeeld http://www.mijnwebsite.com/cgi-bin/hallo.pl, dan is dit het resultaat en perl werkt dan goed:
1 2 |
Hallo Wereld! Mijn Perl script werkt! |
Werkt je script niet?, kijk dan in de Apache logs wat de foutmelding is en google deze!
Uitleg CGI scripts algemeen (belangrijk):
In de 1e regel moet je beginnen met een she-bang –> “!#” gevolgd door de locatie en het uitvoerbaar bestand van het externe programma, zodat Apache dit script kan uitvoeren met het juiste programma.
De 2e Regel is bedoeld voor commentaar bij het script (begin met #), geen commentaar, dan laat deze regel LEEG!
Vanaf de 3e regel mag je programmeren!