Перехват ответа от system()

tristram

Guest
Перехват ответа от system()

system -- Execute an external program and display the output
нужно получить полный ответ от команды а не только послед. строчку. в $result без вывода в броузер используя именно system() т.е. shell_exec() и ему подобные не предлогать.

я думал надо ob_* функциями но возможно есть более правильное решение

Заранее всем спасибо, задолбался если честно.
 

Nimous

Guest
tristram
Не очень знаком с sh-командами, но нельзя, например, создать глобальную переменную, а потом перенаправить stdout в неё?
 

tristram

Guest
а ты не думаешь что это слишком геморно? просто часто на серваках стоит запрет на исполнение команд через disable_functions, но дурни админы часто забывают одну из них.
PHP:
function myshellexec($cmd)
{ 
 $result = "";
 if (!empty($cmd))
 {
  if (is_callable("exec")) {exec($cmd,$result); $result = join("\n",$result);}
  elseif (is_callable("shell_exec")) {$result = shell_exec($cmd);}
  elseif (is_callable("system")) {@ob_start(); system($cmd); $result = @ob_get_contents(); @ob_end_clean();}
  elseif (is_callable("passthru")) {@ob_start(); passthru($cmd); $result = @ob_get_contents(); @ob_end_clean();}
  elseif (($result = `$cmd`) !== false) {}
  elseif (is_resource($fp = popen($cmd,"r")))
  {
   $result = "";
   while(!feof($fp)) {$result .= fread($fp,1024);}
   pclose($fp);
  }
 }
 return $result;
}
 
Сверху