Newsgroup: it.comp.lang.perl
Titolo: Errori di Mason

Hola
sto cercando di far funzionare uno script  CGI che usa il modulo
HTML::Mason ma mi dà errore.
Comincio con 
---
#!/usr/bin/perl -w
use strict;
use CGI qw(param cookie header);
use HTML::Mason;
package HTML::Mason::Commands;
use vars qw(%session %application);
use Fcntl qw(:flock);
...
---
poi genero due subroutine per lock e release dei files, infine dopo aver
fatto stampare l'header al CGI cerco di testare una sessione con Mason:
---
dbmopen(%HTML::Mason::Commands::session, "$session/dat$id", 0666) || die
"$!";
   dbmopen(%HTML::Mason::Commands::application, "$session/app", 0666) ||
die "$!";
   my $interp = HTML::Mason::Interp->new(parser =>
HTML::Mason::Parser->new(),
   comp_root => '/tmp/mason/component', 
   data_dir => '/tmp/mason/data');
...
---
Non funziona, e mi dice che il HTML::Mason::Interp non avrebbe un metodo
"new":  "Error file ...masondisp.cgi"; Line 40:  Can't locate object
method "new" via package "HTML::Mason::Parser" (perhaps you forgot to
load "HTML::Mason::Parser"?)"
I moduli sembrano installati (da cpan).
Cosa può essere?
grazie mille, ciao
Salvo
-- 
#!/usr/bin/perl
print "Mele §alvo©";

Mason di solito viene usato per includere perl nelle pagine html, non 
per fare CGI direttamente, anche se penso che ci si possa riuscire.
Hai letto bene le istruzioni?
Io lo uso da anni e non ho mai avuto problemi.
Ciao.
Alberto


 Io lo uso da anni e non ho mai avuto problemi.
Puň darsi che ho Mason installato male.
L'ho installato tramite cpan. Come posso fare a testare se funziona?
ciao,
Salvo

La cosa piu' semplice da fare se
usi Apache
Mason e' stato compilato per funzionare con il mod_perl del suddetto Apache
e'
inserire nel file di configurazione di Apache (httpd.conf) le seguenti linee
AddType text/html .mhtml
<FilesMatch "\.mhtml$">
	SetHadler perl-script
	PerlHandler HTML::Mason::ApacheHandler
</Fi;esMatch>
nella directory di installazione di Mason nella cartella eg (se non 
ricordo male) ci sono due files
dump-request.html
show-env.html
li rinomini in
dump-request.mhtml
show-env.mhtml
li metti nella directory dalla quale il webserver serve i documenti
riavvii il webserver
dovresti vedere le impostazioni del sistema tramite Mason.
Non ho mai usato l'interfaccia CGI con mason perche' e' meno potente di 
mod_perl e ha dei casini in piu'.
Ciao.
Alberto


La cosa piu' semplice da fare se
usi Apache
Mason e' stato compilato per funzionare con il mod_perl del suddetto Apache
e'
inserire nel file di configurazione di Apache (httpd.conf) le seguenti linee
AddType text/html .mhtml
<FilesMatch "\.mhtml$">
     SetHadler perl-script
     PerlHandler HTML::Mason::ApacheHandler
</FilesMatch>
nella directory di installazione di Mason nella cartella eg (se non 
ricordo male) ci sono due files
dump-request.html
show-env.html
li rinomini in
dump-request.mhtml
show-env.mhtml
li metti nella directory dalla quale il webserver serve i documenti
riavvii il webserver
dovresti vedere le impostazioni del sistema tramite Mason.
Non ho mai usato l'interfaccia CGI con mason perche' e' meno potente di 
mod_perl e ha dei casini in piu'.
Ciao.
Alberto


 </FilesMatch>
bene, grazie.
Ma prima debbo installare il modulo Mason per Apache, invece di quello
Perl per CGI, giusto?
Ho provato a mettere le linee cosě in Apache, ma mi dice "invalid
sethandler"...
grazie mille della gentilezza.
ciao,
Salvo

Nella risposta c'era un gravismo errore prova cosi'.
AddType text/html .mhtml
<FilesMatch "\.mhtml$">
      SetHandler perl-script
      PerlHandler HTML::Mason::ApacheHandler
</FilesMatch>
Non c'e' nessuna differenza tra installazione CGI o mod_perl (nelle 
distribuzioni linux) una volta installato e' installato dappertutto.
Ciao.
Alberto

 distribuzioni linux) una volta installato e' installato dappertutto.
grazie, è importante saperlo.
Volevo usare il CGI solo perché consigliato dal libro, ma tramite Apache
mi andrebbe meglio.
ciao, mille grazie.
Salvo

Va bene dovunque dalla directory / dei documenti web in giu'.
Se continua a darti errore mi sa che Mason non e' installato 
correttamente, hai fatto make test, cosa dice.
Dai post precedenti ho notato che usi Mac OSX.
Io ho installato Mason su Solaris 9 ma e' stato veramente un casino, 
perche' il mod_perl non e' perfettamente integrato con le directory di 
perl secondo me il problema e' lo stesso.
Ma che libro stai leggendo di bello che consiglia l'utilizzo di Mason e 
CGI .......
Ciao.
Alberto
PS. Ultimo post della settimana da oggi sono in ferie.


 PS. Ultimo post della settimana da oggi sono in ferie.
ok, in ogni caso grazie mille, spero di trovare una soluzione prendendo
spunto dai tuoi post :-)
buone vacanze!
ciao
Salvo

Mi e' venuta in mente una cosa, guarda nel files log degli errori di 
Apache, Mason per funzionare abbisogna dei diritti di scrittura in una 
directory chiamata mason nella server root, in cui mette la cache dei 
componenti. Se ci sono dei problemi di solito nell'error_log c'e' 
scritto che perl non riesce a scrivere i files.
Ciao.
Alberto

 wrote:

grazie Alberto :)
ci ho guardato subito, un secondo fa, e dice solo
"Can't locate object method "new" via package "HTML::Mason::Parser"
(perhaps you forgot to load "HTML::Mason::Parser"?) at
/Users/salvo/Sites/cgi-bin/masondisp.cgi line 40."
come se non potesse caricare il modulo HTML::Mason::Parser
probabilmente è "apparentemente" installato. Dovrei provare a rimuoverlo
e reinstallarlo?
Finora non sono riuscito a farlo funzionare.
ciao,
Salvo

No, dovresti provare con show_env.mhtml, e dump_request.mhtml, e poi 
vedere gli erori in error.log
Per l'uso con CGI la cosa si complica assai.
In questo modo vedi se Mason va o no poi potrai usarlo con CGI.
Ciao.
Alberto

 wrote:

ok, facendo questo con mason/component/show-emv.mhtml in una dir del
server  (
http://localhost/~io/mason/component
) dà
[Sun Feb 29 11:06:53 2004] [error] Default data_dir (MasonDataDir)
'/usr/mason' must be more than two levels deep (or must be set
explicitly)
Stack:
vuol dire che debbo mettere i componenti Mason altrove? fuori dalla
document root?
E in un server non mio come farei?
ciao
Salvo

Ho adesso ci siamo, crea la directory /usr/mason (se non esiste) e 
cambiagli i permessi in chmod a+wrx a questo punto dovrebbe funzionare 
almeno mod_perl.
Ciao.
Alberto


 almeno mod_perl.
ciao,
provato al volo, ed ecco il log:
[Sun Feb 29 19:41:33 2004] [error] Default data_dir (MasonDataDir)
'/usr/mason' must be more than two levels deep (or must be set
explicitly)
Stack:
  [/Library/Perl/5.8.1/HTML/Mason/ApacheHandler.pm:395]
  [(eval 26):6]
  [/dev/null:0]
che dici?
ciao e grazie!
Salvo

A questo punto sarebbe importante riuscire ad entrare nella console di X 
e fare un ricco "ls -l" della directory /usr e controllare che i 
permessi della sottodirectory mason siano drwxrwxrwx.
L'errore sembra il solito che da quando non riesce a scrivere nella 
datadir. Se non va cosi' e' finita.
Sono curioso, domani vado dai cari colleghi del piano dissopra che hanno 
OSX e installo Mason.
Ciao.
Alberto

 OSX e installo Mason.
mi faresti un grande favore. Fammi sapere, grazie :)
ciao
Salvo

 debbo creare sotto /usr/mason le dir component, sessions e data?
No non devi fare niente una volta che Apache riesce a scrivere nella 
directory fa tutto da solo.
Ciao.
Alberto

 directory fa tutto da solo.
ecco, mi chiedo: come lo dico ad Apache? :)
ciao
Salvo

Ho adesso, dovrebbe andare, se la directrory /usr/mason e' drwxrwxrwx, 
prova a vedere le due paginette solite dump_request.mhtml e l'altra.
Ciao.
Alberto

 prova a vedere le due paginette solite dump_request.mhtml e l'altra.
scusa Alberto, fammi capire, le pagine *dove* debbo metterle? in
/usr/mason o in una qualunque directory del server?
Perché nel secondo caso mi dà sempre "internal server error"...
Se tu avessi modo di provare direttamente su Mac OS X... :)
ciao
Salvo

> Se tu avessi modo di provare direttamente su Mac OS X... :)
Ci siamo quasi.
Ciao.
Alberto
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Ci siamo quasi.
ovvero?
aggiornami :-)
hai trovato come farlo andare in Mac OS X ?
grazie comunque, anche perché non ti sei dimenticato :)
ciao
Salvo