exec

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

execExecuta um programa externo

Descrição

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

exec() executa o comando informado em command.

Parâmetros

command

O comando que será executado.

output

Se o argumento output estiver presente, então o array especificado será prenchido com cada linha da saída do comando. Espaço ao final, como \n, não é incluído neste array. Note que se o array já contiver alguns elementos, exec() irá adicionar ao final do array. Se nnão houver intenção de que a função adicione elementos, use unset() no array antes de passá-lo para exec().

result_code

Se o argumento result_code estiver presente junto com o argumento output, então o estado de retorno do comando executado será escrito nesta variável.

Valor Retornado

A última linha do resultado do comando. Se for necessário executar um comando e ter todos os dados dele passados diretamente de volta sem qualquer interferência, use a função passthru().

Retorna false em caso de falha.

Para obter a saída do comando executado, certifique-se de definir e usar o parâmetro output.

Erros/Exceções

Emite um erro de nível E_WARNING se exec() for incapaz de executar o comando em command.

Lança uma exceção ValueError se command estiver vazio ou contiver bytes nulos.

Registro de Alterações

Versão Descrição
8.0.0 Se command estiver vazio ou contiver bytes nulos, exec() agora lança uma exceção ValueError. Anteriormente emitia um erro de nível E_WARNING e retornava false.

Exemplos

Example #1 Um exemplo exec()

<?php
// Mostra o nome de quem é o dono do processo php/httpd
// (em um sistema com o executável "whoami" no path)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo "Retornou com estado $retval e saída:\n";
print_r($output);
?>

O exemplo acima produzirá algo semelhante a:

Retornou com estado 0 e saída:
Array
(
    [0] => cmb
)

Notas

Warning

Ao permitir que os dados fornecidos pelo usuário sejam passados para esta função, use escapeshellarg() ou escapeshellcmd() para garantir que os usuários não possam induzir o sistema a executar comandos arbitrários.

Note:

Se um programa for iniciado com esta função, para que continue rodando em segundo plano, a saída do programa deve ser redirecionada para um arquivo ou outro stream de saída. Deixar de fazer isso fará com que o PHP trave até que a execução do programa termine.

Note:

No Windows, a função exec() primeiro iniciará o cmd.exe para executar o comando. Se desejar iniciar um programa externo sem iniciar o cmd.exe, use a função proc_open() com o parâmetro bypass_shell definido.

Veja Também