Ejecuta un programa externo

# exec

(PHP 4, PHP 5, PHP 7, PHP 8)

exec — Ejecuta un programa externo

### Descripción

function exec(string `$command`, array `&$output` = `null`, int `&$result_code` = `null`): string|false

exec() ejecuta el comando `command`.

### 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.

### Historial de cambios

Versión | Descripción
--- | ---
8.0.0 | Si `command` está vacío o contiene bytes nulos, exec() levanta ahora una excepción ValueError. Anteriormente, se emitía una advertencia `E_WARNING` y se devolvía `false`.

### 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 "Devuelto con estado $retval y salida:\n";
    print_r($output);
    ?>

Resultado del ejemplo anterior es similar a:

    Devuelto con estado 0 y salida:
    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`.

### Ver también

- system() - Ejecutar un programa externo y mostrar su salida
- passthru() - Ejecuta un programa externo y muestra el resultado sin procesar
- escapeshellcmd() - Protege los caracteres especiales del Shell
- pcntl_exec() - Ejecuta el programa indicado en el espacio actual de procesos
- comillas invertidas

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open