Problema: Esecuzione di script in
perl al di fuori della cgi-bin con Apache in Fedora Core 7
Abbiamo un Apache 2.2.8
[root]# httpd -v
Server version: Apache/2.2.8 (Unix)
Server built: Jan 24 2008 10:44:19
installato con Fedora Core 7
[root]# uname -r
2.6.21-1.3194.fc7
Vogliamo eseguire gli script in perl al di fuori della directory cgi-bin
Soluzione:
_________________________________________________________________________________________________________
1. Apache ha la gestione dinamica dei moduli, ovvero non va ricompilato se si installano moduli nuovi. Questo si verifica vedendo la presenza di "mod_so.c" per la gestione dei DSO, ovvero dei moduli dinamici. Questo e' di default nell'installazione di apache da fedora. Se non lo avete probabilmente avete installato apache successivamente per conto vostro e quindi questo tutorial non fa per voi in quanto dovete reinstallare apache.
[root]# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
________________________________________________________________________________________________________
2. Verificate che nel sistema c'e' mod_perl.c
[root]# cat /var/log/rpmpkgs | grep mod_perl
mod_perl-2.0.3-7.i386.rpm
Se non lo avete installatelo con "yum install mod_perl"
_________________________________________________________________________________________________________
3. Editate il file /etc/httd/conf/httpd.conf
Poiche' volete utilizzare gli script al di fuori di cgi-bin dovete specificare il nuovo path. Qui supponiamo che la directory con i file in perl sia /var/www/html/HOMEPAGE. Allora cambiate la riga:
ScriptAlias /cgi-bin/ "var/www/cgi-bin/"
con:
ScriptAlias / "/var/www/html/mieiscript/"
Altrimenti potreste avere l'errore:
Forbidden
You don't have permission to access /pippo.pl on this server.
_________________________________________________________________________________________________________
4. Verificate che nella configurazione del VirtualHost o comunque del vostro sito web vi sia la riga:
Options ExecCGI
Altrimenti potreste avere l'errore:
[Wed Jun 18 10:34:10 2008] [error] [client 192.168.9.8] Options ExecCGI is
off in this directory: /var/www/html/mieiscript/pippo.pl
_________________________________________________________________________________________________________
Note:
1.
Non e' necessario che nel file httpd.conf aggiungiate la riga
LoadModule perl_module modules/mod_perl.so
Il modulo viene caricato comunque.
2. In "httpd -l" non e' necessario che appaia il modulo "mod_perl.so"
3. Se nella pagina web avete l'errore:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to
complete your request.
probabilmente c'e' un errore durante l'esecuzione dello script in perl.
Vedete con "tail -f /var/log/httpd/error_log"
4. Errore "Premature end of script headers"
[Wed Jun 18 11:23:56 2008] [error] [client 192.168.9.8] (13)Permission
denied: exec of '/var/www/html/mieiscript/index.htm' failed
[Wed Jun 18 11:23:56 2008] [error] [client 192.168.9.8] Premature end of script
headers: index.htm
Se avete un errore su un file .html ma relativo agli script probabilmente avete
sovrapposto la cartella degli script con quella dei file html.