system

(PHP 3, PHP 4 , PHP 5)

system -- Ejecutar un programa externo y mostrar su salida

Descripción

string system ( string comando [, int val_retorno])

system() es similar a la versión C de la función de mismo nombre, dado que ejecuta el comando dado y muestra el resultado. Si se entrega una variable como segundo argumento, entonces el código de status devuelto por el comando ejecutado será escrito en esta variable.

Aviso

Si se va a permitir que datos provenientes del usuario sean enviados a esta funcion, habria que utilizar escapeshellarg() o escapeshellcmd() para asegurarse que el usuario no intenta engañar al sistema para que ejecute comandos arbitrarios.

Nota: Si arrancamos un programa con esta funcion y queremos dejarlo ejecutandose en segundo plano, hay que asegurarse que el resultado del mismo es redireccionado a un fichero u otra salida o PHP se parara hasta que la ejecucion del programa termine.

La llamada a system() también intenta volcar automáticamente el búfer de salida del servidor web después de cada línea de salida, si PHP está corriendo como un módulo de servidor.

Devuelve la última línea de la salida del comando en caso de éxito, y FALSE si se presenta algún fallo.

Si necesita ejecutar un comando y recibir de vuelta todo los datos del mismo sin interferencias, use la función passthru().

Ejemplo 1. Ejemplo de system()

<?php
echo '<pre>';

// Muestra el resultado completo del comando "ls", y devuelve la
// ultima linea de la salida en $ultima_linea. Almacena el valor de
// retorno del comando en $retval.
$ultima_linea = system('ls', $retval);

// Imprimir informacion adicional
echo '
</pre>
<hr />Ultima linea de la salida: '
. $ultima_linea . '
<hr />Valor de retorno: '
. $retval;
?>

Nota: Cuando safe mode esta activado, solamente se pueden ejecutar los programas que se encuentren en safe_mode_exec_dir. Por razones practicas, no se permite el uso de .. en el PATH del programa.

Aviso

Con safe mode activado, todas las palabras que siguan al comando inicial son tratadas como un solo argumento. Asi, echo y | echo x se interpreta como echo "y | echo x".

Vea también exec(), passthru(), popen(), escapeshellcmd(), pcntl_exec() y el operador de comilla invertida.