Page MenuHomePhorge

D25149.1736575526.diff
No OneTemporary

D25149.1736575526.diff

diff --git a/src/applications/config/controller/PhabricatorConfigConsoleController.php b/src/applications/config/controller/PhabricatorConfigConsoleController.php
--- a/src/applications/config/controller/PhabricatorConfigConsoleController.php
+++ b/src/applications/config/controller/PhabricatorConfigConsoleController.php
@@ -150,6 +150,16 @@
$log_futures = array();
$remote_futures = array();
+ // Git commands needs the HOME environment variable
+ // to read their .gitconfig - otherwise you cannot
+ // fix errors like "detected dubious ownership"
+ // https://we.phorge.it/T15282
+ $commands_env = array();
+ $webserver_home = self::webserverHomePath();
+ if ($webserver_home) {
+ $commands_env['HOME'] = $webserver_home;
+ }
+
foreach ($specs as $lib) {
$root = dirname(phutil_get_library_root($lib));
@@ -161,9 +171,11 @@
'git remote -v');
$log_futures[$lib] = id(new ExecFuture('%C', $log_command))
+ ->setEnv($commands_env)
->setCWD($root);
$remote_futures[$lib] = id(new ExecFuture('%C', $remote_command))
+ ->setEnv($commands_env)
->setCWD($root);
}
@@ -248,6 +260,7 @@
$root = dirname(phutil_get_library_root($lib));
$upstream_futures[$lib] = id(new ExecFuture('%C', $merge_base_command))
+ ->setEnv($commands_env)
->setCWD($root);
}
@@ -340,5 +353,33 @@
->appendChild($table_view);
}
+ /**
+ * Get the HOME of the current webserver user
+ *
+ * Example: In mod_php it returns something like "/var/www/html"
+ * Example: In PHP-FPM it returns the home of the configured pool user
+ *
+ * @return string|null
+ */
+ private static function webserverHomePath() {
+
+ // Almost surely Microsoft Windows does not have these functions
+ if (function_exists('posix_geteuid') && function_exists('posix_getpwuid')) {
+
+ // This is almost surely Unix/Linux
+
+ // Let's read the "effective" user UID (not the "real" one)
+ // Example: in PHP-FPM we want the effective pool user, not root daemon
+ // https://we.phorge.it/T15298
+ $webserver_user = posix_getpwuid(posix_geteuid());
+ if ($webserver_user !== false) {
+ return $webserver_user['dir'];
+ }
+ }
+
+ // If you are used by Microsoft Windows or other esoteric things,
+ // you probably don't have any real home. Ouch! We're sorry to hear that.
+ return null;
+ }
}

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 11, 06:05 (1 w, 18 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1109637
Default Alt Text
D25149.1736575526.diff (2 KB)

Event Timeline