array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.exec.php', 1 => 'exec', ), 'up' => array ( 0 => 'ref.exec.php', 1 => 'Funções para Execução de programas', ), 'prev' => array ( 0 => 'function.escapeshellcmd.php', 1 => 'escapeshellcmd', ), 'next' => array ( 0 => 'function.passthru.php', 1 => 'passthru', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/exec/functions/exec.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Executa um programa externo
exec() executa o comando informado em
command
.
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.
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
.
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.
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 .
|
Exemplo #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 )
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.
Nota:
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.
Nota:
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.