No puedo reproducir esto en mi sistema, Ubuntu Hardy.He aquí una muestra:
/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$
código de salida 0 significa que la ejecución con éxito del programa, por lo que tipo de sonidos como si estuviera quizás ejecutando el script_a.php mal o tal vez el ejecutable "php" no está haciendo lo que eres esperando? ¿Quizás tiene un script llamado "php" que está en su camino antes del intérprete? ¿Qué reporta "which php"? En mi sistema dice "/ usr/bin/php".
Si PHP no puede encontrar el script, sería salir con 1, por ejemplo:
/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$
En este caso, he cambiado el script_b.php para tratar de ejecutar un script que no existe, y obtengo el código de salida 1 (debería ser 2 si se completó con éxito, porque cambié el script_a anterior), pero también muestra el error de que no pudo ejecutar el programa.
Es posible que desee para tratar de cambiar para que se ejecute específicamente la ruta completa al ejecutable PHP:
system('/usr/bin/php script_a.php')
o también la ruta completa de la secuencia de comandos, así:
system('/usr/bin/php /tmp/sbuzz/script_a.php')
También podría intente ejecutar específicamente un programa que devolverá 1, al igual que otro punto de datos, como:
system('false')
system('bash -c "exit 69"')
Es posible que desee probar un código de salida distinto de 1, que es una falla común. Es por eso que hice "salir 69" arriba. "Falsa" para salir con 1.
También, por supuesto, intente ejecutar el script_a.php directamente:
/tmp/sbuzz$ php script_a.php
/tmp/sbuzz$ echo $?
2
/tmp/sbuzz$
El "$?" es el código de salida del último comando de ejecución, en el indicador del shell.
¿Qué contiene '$?' Cuando se ejecuta script_a.php desde la línea de comandos? –
¿Qué versión de php está usando en el servidor Unix, comparando con Windows – RobertPitt
? Si ejecuto script_b desde la línea de comandos, todo funciona bien. ¿Qué es $? –