você está aqui: Home  → Arquivo de Mensagens Curso Gratuito sobre Expressões Regulares, com o Prof.  Julio Neves

PHP + Shell Script (II)

Colaboração: José de Lima Junior

Data de Publicação: 03 de Setembro de 2007

Complementando a dica do Bruno Magalhães, em alguns casos é necessário sabermos o código de erro retornado, a saída padrão e a descrição do(s) erro(s). O script abaixo faz esta tarefa.

As variáveis $stdout e $stderr são arrays, o que é interessante, quando necessitamos rodar o script pelo cron, pois sendo assim os resultados podem ser colocados em um arquivo, enviados por e-mail, etc. sem interferir na stdout do cron.

<?php

$cmd = "ls -la";
$stdout = array();
$stderr = array();
$return = execute($cmd, &$stdout, &$stderr);

echo "  Codigo de erro: " . $return . "\n";
echo "Saida do comando: " . "\n";
print_r($stdout);
echo "   Saida de erro: " . "\n";
print_r($stderr);

function execute($cmd, &$stdout, &$stderr)
{
  $tmp = "/tmp";
  $acmd = explode(" ", $cmd);
  $outfile = tempnam($tmp, "cmd");
  $errfile = tempnam($tmp, "cmd");
  $descriptorspec = array(
      0 => array("pipe", "r"),
      1 => array("file", $outfile, "w"),
      2 => array("file", $errfile, "w")
  );
  $proc = proc_open($cmd, $descriptorspec, $pipes);
  if (!is_resource($proc)) return 255;
  fclose($pipes[0]);
  $exit = proc_close($proc);
  $stdout = file($outfile);
  $stderr = file($errfile);
  unlink($outfile);
  unlink($errfile);
  return $exit;
}
?>


Veja a relação completa dos artigos de José de Lima Junior