Forum und email

system

(PHP 4, PHP 5)

system — Executa um programa externo e mostra a saída

Descrição

string system ( string $command [, int $return_var ] )

system() é igual a versão C desta função no que executa o command indicado e mostra o resultado. Se é dada uma variável como segundo argumento, então o código de status de retorno será escrito nesta variável.

Aviso

Se você for permitir que dados vindos do usuário sejam passados para essa função, eles precisam passar por escapeshellarg() ou escapeshellcmd() para se certificar que os usuários não tentarão enganar o sistema com comandos arbitrários.

Nota: Se você iniciar um programa com essa função e deseja que ele continue rodando em background, você precisa garantir que as saídas do programa sejam redirecionadas para um arquivo ou outro suporte a stream senão o PHP irá esperar até que a execução do programa termine.

A função system() também tenta automaticamente limpar o buffer de saída do servidor mandando os dados para o browser após cada linha de saída se o PHP estiver sendo executado como módulo de servidor.

Retorna a última linha da saída do comando em caso de sucesso ou FALSE em caso de falha.

Se você precisa executar um comando e ter todos os dados do comando passados sem nenhuma interferencia, use a função passthru().

Example#1 Exemplo system()

<?php
echo '<pre>';

// Mostra todo o resultado do comando do shell "ls", e retorna
// a última linha da saída em $last_line. Guarda o valor de retorno
// do comando shell em $retval.
$last_line system('ls'$retval);

// Mostrando informação adicional
echo '
</pre>
<hr />Última linha da saída: '
.$last_line.'
<hr />Valor de Retorno: '
.$retval;
?>

Nota: Quando o safe mode estiver ativo, você só pode chamar executáveis dentro de safe_mode_exec_dir. Por razões práticas não é permitido haver .. no caminho do executável.

Aviso

Com safe mode ativado, a string do comando é escapada com escapeshellcmd(). Então, echo y | echo x vira echo y \| echo x.

Veja também exec(), passthru(), popen(), escapeshellcmd(), pcntl_exec() e backtick operator.