<?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