Newsgroup: it.comp.lang.perl
Titolo: print `/usr/bin/php /home/utente/wwwroot/lib/header.php`

Salve,
premetto che sono esperto di PHP ma non conosco PERL.
In un server web ho uno script in PERL (script.cgi) che deve
essere invocato via browser e che contiene l'istruzione:
print `/usr/bin/php /home/utente/wwwroot/lib/header.php`
La suddetta istruzione mi serve per generare una header
HTML a partire da un file sorgente in PHP che deve essere
interpretato chiamando il PHP da riga di comando.
Il problema è che avendo recentemente cambiato server
da A a B, tale meccanismo non funziona più.
Ho già ampliamente verificato che non si tratta
assolutamente di un problema di path errati.
Nel server A tutto funzionava correttamente mostrando:
1) output PHP risultante dal parsing di header.php
2) output CGI risultante dall'esecuzione di script.cgi
Nel server B invece viene mostrato:
1) "Content-type: text/html X-Powered-By: PHP/4.3.10" (generato da 
/usr/bin/php)
2) sorgente CGI del file script.cgi
Non ho la più pallida idea del perchè questo accada... e soprattutto di come 
risolvere.
Suggerimenti ???
P.S.
Ho provato da SSH ad eseguire il comando per il parsing del PHP e funziona 
correttamente:
/usr/bin/php /home/utente/wwwroot/lib/header.php
Grazie mille anticipatamente,
Riccardo
-- 
* Immolo - Ricerca annunci immobiliari
* web: 
http://www.immolo.it

 Va configurato perché esegua i file .cgi, come farlo dipende dal server.
Guarda che il server web è già configurato per eseguire i file .cgi,
infatti se elimino la riga seguente tutto funziona correttamente:
print `/usr/bin/php /home/utente/wwwroot/lib/header.php`
Dunque "il punto" non credo sia la configurazione del web server.
Grazie comunque,


 E allora occhio al content-type ed alle dichiarazioni iniziali.
Puoi spiegarti meglio ?
Grazie
Riccardo
-- 

 Quindi ricominciamo. Ti si vede il sorgente *Perl*?
No, purtroppo il problema è rimasto.
:(
Grazie comunque,
Riccardo
-- 

 Non hai scritto neanche che server e che OS hai, duro indovinarlo.
Linux 2.6.9-67.0.4.EL #1 Sun Feb 3 06:53:29 EST 2008 i686
Apache/1.3.37 (Unix) PHP/4.4.7
-- 

 ha scritto nel messaggionews:1idgeo4.10l9aqj16tmmdcN%bale...@faqintosh.com...

Scusami ma nel file CGI, hai inserito l'intestazione, prima del
"corpo" dello script l'istruzione al preprocessore:
[ #!/usr/bin/perl ]
Questa istruzione al preprocessore dice al preprocessore appunto dove
viene localizzato l'interprete Perl per ,appunto, interpretare ed
eseguire lo script.
Se l'interprete è in un altro percorso sul tuo server, ovviamente
utilizza e scrivici il giusto Percorso.
Altra Informazione importante: Di solito su piattaforme Linux Server,
Perl è Preinstallato , ma non è sempre cosi, hai provato a controllare
se c'è o no?
Sei sicuro che Apache o il tuo Webserver sia stato configurato per
lavorare anche con perl oltre che con PHP??
Se non lo sai...ACCERTATENE!
Comunque , come fa a venirti difficile imparare perl se sai PHP, PHP
diciamo che non è altro che una evoluzione del linguaggio Perl, alcuni
dicono sia un Miglioramento, altri preferiscono Perl a PHP,io sono per
il secondo parere anche se comunque PHP non è da buttare via...
Spero comunque che le mie dritte e informazioni possano esserti state
d'aiuto, se posso darti un consiglio, la prossima volta che avrai
qualche problema e scriverai in questo newsgroup,ma allo stesso modo
anche in tutti gli altri, ricordati di dare piu informazioni
possibili, sulla tua macchina, sulle configurazioni etc..etc..Di
sicuro aiuterai le persone che dedicheranno tempo al tuo problema ad
aiutarti seriamente e in modo piu veloce e migliore..
Ricordati che chi ti aiuta lo fa gratuitamente , senza alcun
interesse, e di conseguenza un minimo di serieta e Il massimo delle
Informazioni sono di dovere, Loro non stanno come te dietro al tuo pc
e nn sanno nulla di te e del tuo pc o server che sia..percio molte
volte essendo problemi legati proprio su configurazioni di sistema,
andare per tentativi , risulta piu Lungo, dispendioso di energie,e
difficile per l'avventore che cerca una soluzione al tuo problema,
Questa non voleva assolutamente essere unaPredica, ne una critica ne
altro, semplicemente un Consiglio..che potra essere seguito oppure
no...
Ciao, e facci sapere se hai risolto!

 cercherò un'altra donna dentro ai sogni di Tarzan
LOL come al solito mi scappano sempre alcune cose per colpa della mia
scarsa attenzione causa FEBBRE...boh nn so che dire..!

 nessuna conclusione.
Mi rendo conto che non è facile con gli elementi forniti.
Comunque grazie lo stesso.
Riccardo
-- 

Grazie per la risposta... accetto volentieri le critiche, tuttavia
in questo caso non credo di aver omesso elementi realmente
utili alla risoluzione.
Avendo descritto quello che accade dubito che informazioni
dettagliate sui numeri di versione avrebbero aiutato gran che.
Speravo che qualcuno sapesse il perchè di quello strano
comportamento... cioè mostrare il sorgente Perl quando
inserisco l'istruzione "print `/usr/bin/php /mypath/myscript.php`.
Dato che senza quell'istruzione "print ..." lo script Perl funziona
regolarmente (seppur ovviamente manca l'header che dovrebbe
essere generato dal php).
Grazie ancora,
Riccardo
-- 

 dicono sia un Miglioramento,
A tutti quegli alcuni che dicono sia un miglioramento:
http://tnx.nl/php
http://tnx.nl/php5
Ciao,
Emanuele.

Riccardo ha scritto:

Mah, che genere di stringa da in output il comando esterno? giusto per 
curiosità prova a fare una cosa del genere:
my $out=qx{/usr/bin/php /mypath/myscript.php};
print $out;
se non funziona aggiungi qualcosa del genere:
$out=~s/<\/?html>//gi;
print $out;

 print $out;
Allora, ho fatto qualche altro test e temo che il problema dipenda dal PHP.
Spero comunque che qualcuno possa capirci qualcosa in più ed aiutarmi.
Per i miei test ho utilizzato due script cgi scritti apposta per 
l'occasione:
- test1.cgi
- test2.cgi
Il file test1.cgi contiene il seguente codice:
**************************************
#!/usr/bin/perl
# INIZIO CODICE CGI
print "Content-type: text/html\n\n";
print "<H1>Hello World</H1>\n";
my $out=qx{uptime};
print $out;
# FINE CODICE CGI
<? echo "comando interpretato dal PHP"; ?>
**************************************
Accedendo via browser HTTP a test1.cgi ottengo giustamente il seguente 
output HTML:
**************************************
<H1>Hello World</H1>
 17:20:46 up 56 days, 13:28,  1 user,  load average: 2.54, 1.50, 1.37
**************************************
Il file test2.cgi invece contiene il seguente codice:
**************************************
#!/usr/bin/perl
# INIZIO CODICE CGI
print "Content-type: text/html\n\n";
print "<H1>Hello World</H1>\n";
my $out=qx{/usr/bin/php -i};
print $out;
# FINE CODICE CGI
<? echo "comando interpretato dal PHP"; ?>
**************************************
Accedendo via browser HTTP a test2.cgi ottengo invece il seguente output 
HTML:
**************************************
<H1>Hello World</H1>
X-Powered-By: PHP/4.4.7
Content-type: text/html
# INIZIO CODICE CGI
print "Content-type: text/html\n\n";
print "<H1>Hello World</H1>\n";
my $out=qx{/usr/bin/php -i};
print $out;
# FINE CODICE CGI
comando interpretato dal PHP
**************************************
Quello che succede è che l'esecuzione di "/usr/bin/php -i" fa sì
che vengano visualizzate le righe di intestazione generate dal PHP:
**************************************
X-Powered-By: PHP/4.4.7
Content-type: text/html
**************************************
seguite però dal codice sorgente di test2.cgi.
Vi faccio notare però anche l'ultima riga dell'output:
**************************************
comando interpretato dal PHP
**************************************
mostra come l'ultima istruzione nel sorgente (che poi
è anche la prima istruzione dopo "print $out;")
sia stata inspiegabilmente interpretata dal PHP che
ha letteralmente interpretato la sintassi PHP:
**************************************
<? echo "comando interpretato dal PHP"; ?>
**************************************
A voi la spiegazione...
;)
Dite che dovrei chiedere su: it.comp.www.php ?
Grazie comunque a tutti coloro che mi hanno dedicato del tempo.
Riccardo
-- 
* Immolo - Portale di annunci immobiliari
* web: 
http://www.immolo.it

 Riccardo
mmm... inaudito, non saprei che pensare. Per curiosità, che succede ai 2 
script se disabiliti temporaneamente il l'esecuzione di codice PHP da 
Apache?