array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w") ); $process = proc_open("git ls-tree --name-only -r -z '47a20d076e292a34393def481663fcad69e1b6be' -- ''", $descriptorspec, $pipes, '/web/sites/phabricator/repo/PP/'); $content = stream_get_contents($pipes[1]); $errors = stream_get_contents($pipes[2]); $return_code = proc_close($process); var_dump($content) // output from git ls-tree var_dump($errors); // "" empty string var_dump($return_code); // -1 $cmd = "cd /web/sites/phabricator/repo/PP/ && git ls-tree --name-only -r -z '47a20d076e292a34393def481663fcad69e1b6be' -- ''"; exec($cmd, $output, $ret); var_dump($output); // same output as above var_dump($ret); // 0