exec
(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Ejecuta un programa externo
Parámetros
command
-
El comando a ejecutar.
output
-
Si el argumento output
está presente,
entonces este array será rellenado por las líneas devueltas por
el comando. Los espacios al inicio y al final de la cadena, como
\n
, no serán incluidos en este array.
Cabe señalar que si este array contiene
elementos, exec() añadirá
las nuevas líneas al final del array. Si no se desean
concatenar los nuevos elementos, utilice la función
unset() con este array antes
de pasárselo a exec().
result_code
-
Si el argumento result_code
está presente
además del array output
, entonces el estado
de retorno de ejecución será escrito en esta variable.
Valores devueltos
La última línea del resultado del comando. Para ejecutar un comando
y obtener el resultado sin ningún tratamiento, debe utilizarse la
función passthru().
Devuelve false
en caso de error.
Para recuperar la salida del comando ejecutado, asegúrese de definir
y utilizar el parámetro output
.
Errores/Excepciones
Emite una advertencia E_WARNING
si exec() no puede
ejecutar el comando command
.
Levanta una excepción ValueError si command
está vacío o contiene bytes nulos.
Ejemplos
Ejemplo #1 Ejemplo con exec()
<?php
// Muestra el nombre de usuario que ejecuta el proceso php/http
// (en un sistema que tenga "whoami" en el camino de ejecutables)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo "Returned with status $retval and output:\n";
print_r($output);
?>
Resultado del ejemplo anterior es similar a :
Returned with status 0 and output:
Array
(
[0] => cmb
)
Notas
Advertencia
Si los datos provenientes de los usuarios tienen permiso de ser pasados a esta función, utilice
escapeshellarg() o escapeshellcmd() para asegurarse de que los usuarios
no puedan hacer que el sistema ejecute comandos arbitrarios.
Nota:
Si un programa es iniciado con esta función y se ejecuta en segundo plano, la salida del programa debe
ser redirigida a un archivo, o a otro flujo de salida. De lo contrario, PHP se bloqueará
hasta el final de la ejecución del programa.
Nota:
En Windows exec() iniciará primero cmd.exe para ejecutar el comando.
Si se desea iniciar un programa externo sin ejecutar cmd.exe utilice proc_open()
definiendo la opción bypass_shell
.