<?php
$descriptorspec = array(
0 => 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