array("pipe", "r"), // stdin 1 => array("pipe", "w"), // stdout 2 => array("pipe", "w"), // stderr ); $process = proc_open($cmd, $descriptorspec, $pipes, __DIR__ . '/..', null); $stdout = stream_get_contents($pipes[1]); fclose($pipes[1]); $stderr = stream_get_contents($pipes[2]); fclose($pipes[2]); $iCode = proc_close($process); $bSuccess = (0 === $iCode); $iElapsed = time() - $iBeginTime; if (!$bSuccess) { fwrite(STDERR, sprintf( "\nCOMMAND FAILED! (%s) \n - status:%s \n - stderr:%s \n - stdout: %s\n - elapsed:%ss\n\n", $cmd, $iCode, rtrim($stderr), rtrim($stdout), $iElapsed )); } else { echo "| elapsed:{$iElapsed}s \n"; } if (!empty($stderr)) { fwrite(STDERR, "$stderr\n"); } if (!empty($stdout)) { echo "stdout :$stdout\n\n"; } return $bSuccess; }