Newsgroup: it.comp.www.php
Titolo: PHP lancia un eseguibile che cambia la stampante

Ho un eseguibile Windows che genera un report molto complesso, cambia la 
stampante in una PostScript generica e fittizia ("Generic Color PS for 
Commercial Printing" su FILE:), ed esegue una stampa fittizia, cosi' 
salvando il report in un file PostScript. Uso poi GhostScript  per 
convertire in PDF.
Sul mio webserver, ho messo un file .php che chiama questo eseguibile, e poi 
usando degli header() opportuni mostra questi PDF: in pratica, il mio file 
.php e' un interfaccia web per questo eseguibile.
Su due dei miei webserver, funziona tutto. Sul terzo, l'eseguibile si 
inceppa perche' non riesce a settare la stampante. Cosa succede?
Info addizionali:
Funziona con il mio webserver locale (IIS su Windows XP) e con IIS su 
Windows Server 2003 SP2.
Non funziona con IIS su Windows2000 SP4.
Inoltre, sulla macchina su cui NON funziona:
- Se lancio l'eseguibile manualmente, funziona
- Se lancio il php da linea di comando, funziona
- Se lancio il php da linea di comando, utilizzando una command line 
lanciata come utente "guest" (quindi con gli stessi diritti dello script 
.php sul webserver) funziona
- Se lancio il php chiamando una pagina dal webserver, *non* funziona
La stampante da' permesso di stampare a "Everyone"
Per favore aiutatemi, non e' completamente un problema .php, pero' se ci 
pensate bene potrebbero dirmi in altri ng che non e' un problema di 
PostScript, o di stampanti ecc.  :-)

 PostScript, o di stampanti ecc.  :-)
E' un problema di webserver, controlla il file di log.

 - Se lancio il php chiamando una pagina dal webserver, *non* funziona
magari nei settaggi di php sono  vietate le chiamate di quel tipo.
prova a mettere
error_reporting(E_ALL);
in testa alla pagina e togli la header() e vedi un po' che dice.
d

 wrote in message 
news:2b05cbbf-04dd-44f4...@r10g2000prf.googlegroups.com...

Non vedo niente, perche' l'eseguibile viene lanciato. Solo, non riesce a 
fare il suo dovere. 

 fare il suo dovere.
mmm... allora non è che il programma si aspetta delle variabili
d'ambiente? Non riesci a far loggare qualcosa al programma?
d

 wrote in message 
news:090612f7-1ae0-4ea6...@b38g2000prf.googlegroups.com...

Il programma e' in PowerBuilder, con il logging ho stabilito che a fallire 
e' la chiamata a PrintSetPrinter( "Generic Color PS for Commercial 
Printing" )
Immagino che questo si risolva in chiamate di sistema a Windows per settare 
la stampante. Da questo comando pero' non ho alcun messaggio di errore, e la 
funzione ritorna solo 2 valori, success o failure.
Quindi posso solo cercare di capire perche' la chiamata fallisce solo quando 
c'e' il webserver di mezzo, e perche' sugli altri server funziona. 

 c'e' il webserver di mezzo, e perche' sugli altri server funziona.
io darei un'occhiata alle variabili d'ambiente, dalla shell dai il
comando "set", magari ti trovi una variabile che ha a che fare con la
stampante o il programma di stampa che magari non viene settata in php
via webserver. Se ci pensi potrebbe avere molto senso, dal momento che
hai detto che da php via shell invece funziona... e infatti lanciando
php dalla shell, il php si "becca" tutte le variabili d'ambiente
presenti.
d

se la macchina ha ssh o equivalente, puoi far loggare l'utente via ssh nello
script (posto che ci sia la coppia chiavi pubbliche/privata)
ad esempio:
exec("ssh utentechefunziona@localhost /usr/bin/php /path/to/file.php");
-- 
·

 Non funziona con IIS su Windows2000 SP4.
Grazie a tutti, ma ho risolto con un semplice comando sul server 
incriminato:
FORMAT C:

 FORMAT C:
rotfl, ottima soluzione!
ora vedi di fare le cpose per bene e prendi un cd a scelta tra:
debian etch
slackware 12.2
centos boh, non ricordo la versione stabile

 wrote in message 
news:pan.2009.01.16....@inwind.it...

Celo (vabbe', e' Red Hat, ma non facciamo i pignoli).
Se non posto mai domande su di esso e' perche' i server Linux una volta 
installati non ci pensi piu'.
Invece, dimenticare di avere un server Windows e' come dimenticare di avere 
un gatto appeso ai maroni.

 installati non ci pensi piu'.
Se se :-)