exec
En esta página
exec
Ejecuta un programa externo
Descripción#
exec(string $command, [array $output], [int $result_code]): string
```php
`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 con `exec`
```php
Resultado del ejemplo anterior es similar a:
Devuelto con estado 0 y salida:
Array
(
[0] => cmb
)
Notas#
[!WARNING] Si los datos provenientes de los usuarios tienen permiso de ser pasados a esta función, utilice
escapeshellargoescapeshellcmdpara asegurarse de que los usuarios no puedan hacer que el sistema ejecute comandos arbitrarios.[!NOTE] Si un programa es iniciado con esta función y se ejecuta en segundo plano, la salida del programa debe ser redirigida a un fichero, o a otro flujo de salida. De lo contrario, PHP se bloqueará hasta el final de la ejecución del programa.
[!NOTE] En Windows
execiniciará primero cmd.exe para ejecutar el comando. Si se desea iniciar un programa externo sin ejecutar cmd.exe utiliceproc_opendefiniendo la opciónbypass_shell.
Véase también#
system, passthru, escapeshellcmd, pcntl_exec, comillas invertidas