system
(PHP 4, PHP 5)
system — Ejecutar un programa externo y mostrar su salida
Descripción
$command
[, int &$return_var
] )
system() es similar a la versión C de
la función de mismo nombre, dado que ejecuta el
command dado y muestra el resultado.
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.
Si necesita ejecutar un comando y recibir de vuelta todo los datos del mismo sin interferencias, use la función passthru().
Parámetros
-
comando -
El comando que será ejecutado.
-
return_var -
Si el argumento
return_varse encuentra presente, entonces el status devuelto por el comando ejecutado será almacenado en esta variable.
Valores devueltos
Devuelve la última línea de la salida del comando en
caso de tener éxito, y FALSE si ocurre un error.
Ejemplos
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;
?>
Notas
Si se va a permitir que datos provenientes del usuario sean enviados a esta función, habría que utilizar escapeshellarg() o escapeshellcmd() para asegurarse que el usuario no intenta engañar al sistema para que ejecute comandos arbitrarios.
Nota:
Si ejecutamos un programa con esta función y queremos dejarlo ejecutándose en segundo plano, hay que asegurarse que la salida del mismo es redireccionada a un fichero u otro flujo de salida o PHP se quedará esperando hasta que la ejecución del programa termine.
Nota: Cuando safe mode está habilitado, sólo se pueden ejecutar los archivos que se encuentren dentro de safe_mode_exec_dir. Por razones prácticas, actualmente no se le permite tener componentes .. en la ruta al ejecutable.
Con safe mode habilitado, la cadena de comandos se escapa con escapeshellcmd(). Por esto, echo y | echo x quedaría echo y \| echo x.
Ver también
- exec() - Ejecutar un programa externo
- passthru() - Ejecuta un programa externo y muestra la salida en bruto
- popen() - Abre un proceso de un puntero a un fichero
- escapeshellcmd() - Escapar meta-caracteres del intérprete de comandos
- pcntl_exec() - Executes specified program in current process space
- el operador de comillas invertidas