De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


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;
  }
  ?>
Error: No domain found