2012-02-26 12 views
10

Estoy tratando de usar la función PHP exec().¿Cuál es el valor de retorno de PHP exec()?

Si el argumento var_retorno está presente junto con el argumento de salida, entonces el estado de retorno del comando ejecutado será escrito a esta variable .

Si la ejecución fue exitosa, es 0. Sin embargo, si hay un error, puede tratarse de una multitud de otros enteros. No puedo encontrar en ninguna parte a qué corresponden esos enteros. ¿Cómo debo interpretar el número entero que obtengo?

Actualización:

realmente debería haber especificado esta originalmente, pero estoy en la ejecución de otro script PHP. A diferencia de rsync, que tiene valores de salida en su página man, no puedo encontrar un equivalente para PHP.

Así que lo que estoy haciendo es algo así como:

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

Respuesta

10

El valor de retorno depende del proceso/programa que ejecutó con exec. Por ejemplo, si ejecutó grep:

El estado de salida es 0 si se encuentran líneas seleccionadas, y 1 si no se encontró . Si se produce un error, el estado de salida es 2. (Nota: POSIX error de código de manejo debe comprobar si hay '2' o superior.)

rsync tiene alrededor de 20 diferentes códigos de salida de error, todo lo explicado minuciosamente en la página man :

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

así que sí, que es dependiente del programa :)

Incluso si se está ejecutando el script PHP, el valor de salida depende de su propio programa. Por defecto scripts php saldrán con 0. Si se utiliza la función de salida puede devolver diferentes códigos de salida:

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

Si desea determinar experimentalmente lo que sus salidas del programa php, lo llaman en la línea de comandos:

php file.php 

luego hacer

echo $? 

esto le mostrará el valor de salida de su script php.

+0

Sí, debería haber especificado eso originalmente. Estoy ejecutando otro script PHP. – burger

0

consulte la página de manual del comando que se está ejecutando. Este valor no tiene nada que ver con PHP, sino con el comando real.

+2

¿o sí? la página de manual para 'php' no tiene una sección de VALOR DEVUELTO. – qdii

2

En mi humilde opinión, antes de usar la función exec() mejor establecer los parámetros output y return_var y leer la ejecución del código de retorno por return_var. No confíe en el valor de retorno de exec().

Cuestiones relacionadas