Sto tentando di richiamare uno script che impiega diversi secondi (servizi Web con terze parti) utilizzando la chiamata exec di PHP. Dopo molte difficoltà, l'ho ridotto al classico esempio di ciao mondo. Lo script chiamando assomiglia:Impossibile eseguire script PHP utilizzando PHP exec
exec('/usr/bin/php /home/quote2bi/tmp/helloworld.php > /tmp/execoutput.txt 2>&1 &');
Quando ho eseguito questo, l'uscita execoutput.txt
contiene una copia della pagina sceneggiatura invocazione, non hello world
come mi aspettavo.
Perché non riesco a eseguire questo script PHP utilizzando exec? Notare che quando cambio il comando in qualcosa come ls -l
, l'output è un elenco di directory come previsto. btw, nel caso abbia importanza, ho fatto chmod lo script chiamato a 755 ...
Aggiornamento - Ho spostato la chiamata exec alla fine dello script chiamante e almeno ora non vedo lo script chiamante eseguito nell'output. Grazie a poster e proverò alcune di queste idee.
Help!
Grazie Steve
John - grazie per la tua risposta, ma sfortunatamente non ha funzionato per me. Quando ho provato: exec ('/ home/quote2bi/tmp/helloworld.php> /tmp/execoutput.txt 2> & 1 &') ... Ho ottenuto gli stessi risultati (pagina corrente nel file di output). Il secondo exec bloccato (manca il &) - quando ho aggiunto ho ottenuto gli stessi risultati. –
C'è qualche opzione se la funzione exec() è disabilitata sul mio server –