2012-02-26 17 views
10

Sto cercando di utilizzare la funzione exec() di PHP.Qual è il valore restituito da exec exec()?

Se l'argomento return_var assieme all'argomento uscita, allora lo stato del comando eseguito verrà scritto in questa variabile .

Se l'esecuzione è riuscita, è 0. Tuttavia, se c'è un errore, può essere una moltitudine di altri numeri interi. Non riesco a trovare da nessuna parte quello a cui corrispondono questi numeri interi. Come dovrei interpretare il numero intero che ottengo?

Aggiornamento:

ho davvero dovuto specificato questo in origine, ma io sono l'esecuzione di un altro script PHP. A differenza di rsync, che ha valori di uscita sulla sua pagina man, non riesco a trovare un equivalente per PHP.

Quindi quello che sto facendo è qualcosa di simile:

$rv = exec('php file.php', $out, $rv); 

risposta

10

Il valore di ritorno dipende dal processo/programma eseguito con exec. Ad esempio, se esegui grep:

Lo stato di uscita è 0 se vengono trovate linee selezionate e 1 se non trovato . Se si è verificato un errore lo stato di uscita è 2. (Nota: POSIX errore che gestisce il codice deve verificare '2' o maggiore.)

rsync ha circa 20 differenti codici di uscita di errore, tutti accuratamente spiegato nella pagina man :

http://linux.die.net/man/1/rsync

quindi sì, è dipendente dal programma :)

Anche se si sta eseguendo script PHP, il valore di uscita dipende dal vostro programma stesso. Di default gli script PHP uscirà con 0. Se si utilizza la funzione di uscita è possibile restituire diversi codici di uscita:

http://php.net/manual/en/function.exit.php

Se si vuole determinare sperimentalmente che cosa il vostro programma PHP uscite, chiamano sulla linea di comando:

php file.php 

quindi fare

echo $? 

questo vi mostrerà il valore di uscita dello script php.

+0

Sì, avrei dovuto specificarlo in origine. Sto eseguendo un altro script PHP. – burger

0

Guardate la pagina di manuale per il comando che si sta eseguendo. Questo valore non ha nulla a che fare con PHP, ma il comando effettivo.

+2

hai fatto? la pagina di manuale per 'php' non ha una sezione RETURN VALUE. – qdii

2

IMHO, prima dell'uso exec() funziona meglio imposta i parametri di uscita e return_var e legge l'esecuzione del codice di ritorno da return_var. Non fare affidamento sul valore restituito exec().