Newsgroup: it.comp.lang.perl
Titolo: [HELP!|!] usare system con CGI

Sono stanco e incaz....
dunque ho 2 programmi perl:
1) il primo è uno script locale, che lancio da riga di comando, fa una
serie di operazioni, sfrutta bioperl, e poi lancia il MATLAB
attraverso la linea: system("matlab  /r mat_function($parametri)");
e funziona perfettamente. Esegue la funzione matlab e torna al
precedente script perl.
2) il secondo dovrebbe fare la stessa cosa però attraverso CGI. Ovvero
ho creato un mini script che fa l'upload dei files (a posto) e poi
lancia un file matlab che li usa. Sul server è installato Matlab e la
path dove ho inserito i file ha tutti i permessi necessari. 
Il problema è che lo script di perl CGI non riesce a lanciare il
matlab usando lo stesso sistema:
system("matlab /r mat_function($parametri)");
se sul server lancio lo stesso comando manualmente: 
 START->RUN-> matlab /r mat_function(15)   funziona!
E allora perchè non va nella seconda modalità? cosa può essere?
ciao 



Ciao,
cosa ti dice l'error_log del webserver? In casi come questo, porta direttamente
alla risoluzione! :-)
Probabilmente è una questione di path nel senso che l'utente sotto cui gira
Apache non ha nel path il percorso del matlab. Al limite potrebbe non avere i
permessi di esecuzione (cosa però di cui dubito).
Prova ad usare il path completo dell'eseguibile.
by
	- Enrico
--- have fun with 
www.perl.it
 ---

--- have fun with 
www.perl.it
 ---
purtroppo l'error log di Apache non da errori, è come se mi facesse
partire lo script ma poi in effetti non lo esegue. Non riesco ad usare
il path per lanciare matlab da cgi. Se scrivo:
 
 system ("C://matlab6p5/bin/win32/matlab -r mat_test(2)"); 
o varianti con  / e \ il log mi da errori di 
The filename, directory name, or volume label syntax is incorrect.\r,
referer: ....
per il primo suggerimento, ti ringrazio proverò, ma con che user si
logga l'utente anonimo con apache?ce n'è una lista infinita
comunque non credo che sia la soluzione. apache DOVREBBE girare sotto
administrator che ha la path inserita... mi sovviene ora il sospetto
che Apache abbia un suo utente distinto... verifico!
ciao!!!

 che Apache abbia un suo utente distinto... verifico!
Mi sa che questa sia la strada giusta,
ho avuto un problema simile lanciando R da CGI:
sei sicuro che non ci siano problemi di diritti ?
Se tu usi il tuo utente (fuliggians per esempio) riesci a
vedere C://matlab6p5/bin/win32/matlab
ma chi ti garantisce che il www user possa farlo ?
 Raffaello

 Raffaello
per ora i tentativi sono andati a vuoto. 
Comunque, questa è una cosa che mi rode abbastanza: il wwwuser a rigor
di logica, dovrebbe poter vedere solo lo script CGI (
test.pl
) che è
nella directory cgi-bin, ma dopo che questa viene eseguita, le
ulteriori function  o altro che richiama non dovrebbe essere di
competenza del wwwuser  ma dell'administrator, perchè il comando
system è all'interno di 
test.pl
, non è una riga di comando scritta
dall'utente...

 dall'utente...
Ma e' pur sempre chiamato dal wwwuser, no ?
se chiami
 system("comando");
"comando" e' eseguito dal wwwuser.
 Raffaello

"comando" e' eseguito dal wwwuser.
Sì, hai ragione 
il vero problema è che Apache con Window è molto più bastardo da
settare, non si può cambiare le proprietà di un file usando chmod
ecc...
mi trovo un po' spiazzato. Certe volte l'utente è nobody, altre è
Anonymus login, ... insomma tutto questo epr dire che alla fine
disperato ho risettato il defoult di apache e all'improvviso si è
messo ad andare. Fa partire perl e matlab tranquillamente.
Mi rimarrà sempre il dubbio di cosa porca si sia trattato!