View Single Post
Old 13-05-2005, 19:55   #2
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9945
Webserver >> CGI << PERL

Autore Matrixbob-kingv 2004/2005

La coppiata webserver/PERL è resa possibile dalle Common Gateway Interface (interfaccia d'ingresso comune?!) che sono un insieme di protocolli tali che 1 client possa richiedere ed ottenere risultati da 1 server che interpreta uno script od esegue la compilazione di un qualche programma.

PERL (Practical Extraction and Report Language ovvero linguaggio pratico d'estrazione e rapporto?!) è 1 famosissimo linguaggio interpretato (proprio per essere + portatile rispetto ad 1 linguaggio compilato) nato nel 1987 x la gestione delle stringhe di caratteri, inseguito riutilizzato anche per alcune semplici applicazioni web.
In quest'ultimo caso invece di mandare lo standard output a video, il flusso viene rindirizzato in "qualche modo" al browser client sotto forma di risposta xhtml.

INSTALLAZIONE
La versione x Winzoz mi risulta essere quella della:
http://www.activestate.com

La si installa e poi si va a decommentare nel httpd.conf la stringa riguardante il modulo CGI:
LoadModule cgi_module modules/mod_cgi.so

Inoltre va specificata la posizione della cartella tipica dei cgi e vale a dire cgi-bin & lo ScriptAlias al riguardo. Quindi nel nostro caso:

<Directory "D:/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

e

ScriptAlias /cgi-bin/ "D:/www/cgi-bin/"

Questa direttiva ScriptAlias permette di settare una directory, anche esterna alla DocumentRoot, come CGI container (soluzione adottata di default).
In questo caso Apache interpreterà tutte le richieste con l'url che conterrà cgi-bin come richieste per risorse all'interno della directory D:\www\cgi-bin\


A questo punto tutti le applicazioni CGI scritte in PERL andranno messe nella cartella cgi-bin per essere eseguite, mentre le parti di xhtml resteranno della cartella www, insieme ai file.php o file.htm nel qualcaso fossero presenti.

Come script di prova create un file col nome printenv.cgi, in cgi-bin, contenente:
Codice:
#! D:\Perl\bin\perl.exe
##
##  printenv -- demo CGI program which just prints its environment
##
print "Content-type: text/plain\n\n";
foreach $var (sort(keys(%ENV)))
{
    $val = $ENV{$var};
    $val =~ s|\n|\\n|g; 
    $val =~ s|"|\\"|g;
    print "${var}=\"${val}\"\n";
}
e richiamatelo correttamente da browser:
http://localhost/cgi-bin/printenv.cgi
scordatevi di poter accedere alla cartella cgi-bin, perchè essa di default è protetta dal listing.

Se tutto è ok otterrete lo stesso risultato della "phpinfo()" del PHP!!

Se non sapete già programmare in questa maniera, allora ve la sconsiglio, trovo personalmente molto + facile il PHP o linguaggi proprietari come ASP.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 18-06-2005 alle 00:17.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso