exec
(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Executa um programa externo
Descrição
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 argumentooutput
, 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
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
- system() - Executa um programa externo e mostra a saída
- passthru() - Executa um programa externo e mostra a saída bruta
- escapeshellcmd() - Escapa meta-caracteres shell
- pcntl_exec() - Executes specified program in current process space
- Operador crase