Non riesco a riprodurlo sul mio sistema, Ubuntu Hardy.Ecco un esempio:
/tmp$ mkdir /tmp/sbuzz
/tmp$ cd /tmp/sbuzz
/tmp/sbuzz$ echo '<?php exit(1); ?>' >script_a.php
/tmp/sbuzz$ cat >script_b.php
<?php
system('php script_a.php', $return);
var_dump($return);
?>
/tmp/sbuzz$ php script_b.php
int(1)
/tmp/sbuzz$ echo '<?php exit(2); ?>' >script_a.php
/tmp/sbuzz$ php script_b.php
int(2)
/tmp/sbuzz$
Codice di uscita 0 indica l'esecuzione con successo del programma, in modo che tipo di suoni come si sta, magari usando script_a.php sbagliato o forse l'eseguibile "php" non sta facendo quello che sei aspettando? Forse hai uno script chiamato "php" che è nel tuo percorso prima dell'interprete? Che cosa segnala "quale php"? Sul mio sistema dice "/ usr/bin/php".
Se il PHP non riesce a trovare lo script, sarebbe uscire con 1, ad esempio:
/tmp/sbuzz$ cat script_b.php
<?php
system('php doesnt_exist_script_a.php', $return);
var_dump($return);
?>
/tmp/sbuzz$ php script_b.php
Could not open input file: doesnt_exist_script_a.php
int(1)
/tmp/sbuzz$
In questo caso ho cambiato lo script_b.php per cercare di eseguire uno script che non esiste, e ottengo il codice di uscita 1 (dovrebbe essere 2 se è stato completato correttamente, perché ho modificato lo script_a sopra), ma mostra anche l'errore che non è stato in grado di eseguire il programma.
Si potrebbe desiderare di provare a cambiare per eseguire specificamente il percorso completo del file eseguibile PHP:
system('/usr/bin/php script_a.php')
o anche il percorso completo dello script così:
system('/usr/bin/php /tmp/sbuzz/script_a.php')
Si potrebbe anche prova in particolare l'esecuzione di un programma che restituirà 1, proprio come un altro punto di dati, ad esempio:
system('false')
system('bash -c "exit 69"')
Si potrebbe voler provare un codice di uscita diverso da 1, che è un errore comune. Ecco perché ho fatto "exit 69" sopra. "False" uscirà con 1.
Inoltre, naturalmente, provare a eseguire direttamente lo script_a.php:
/tmp/sbuzz$ php script_a.php
/tmp/sbuzz$ echo $?
2
/tmp/sbuzz$
Il "$?" è il codice di uscita dell'ultimo comando di esecuzione, al prompt della shell.
Cosa contiene '$?' Quando si esegue script_a.php dalla riga di comando? –
Che versione di php stai usando su server unix, confrontando con windows – RobertPitt
Se eseguo script_b da riga di comando, tutto funziona correttamente. Cos'è $? –