mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-23 14:00:56 +01:00
Detect empty $PATH environmental var
Summary: By default, PHP-FMP (an alternate PHP FCGI SAPI) cleans the entire environment for child processes. This means we have no $PATH. This causes some confusing failures for reasons I don't fully understand. If you do these things: exec_manual('env'); exec_manual('export'); ...they show no $PATH, as expected. If you do this: exec_manual('echo $PATH'); ...it shows a path. And this works (i.e., it finds the executable): exec_manual('ls'); ...but this fails (it says "no ls in ((null))"): exec_manual('which ls'); So, basically, the sh -c process itself gets a default PATH somehow, but its children don't. I don't realllly get why this happens, but clearly an empty $PATH is a misconfiguration, and can easily be remedied. See discussion here: https://github.com/facebook/libphutil/issues/7 Test Plan: Applied patch to Centos6 + nginx + PHP-FPM machine, ran setup, the configuration issue was detected and I was given information on resolving it. Reviewers: btrahan, jungejason Reviewed By: btrahan CC: aran Differential Revision: https://secure.phabricator.com/D1413
This commit is contained in:
parent
f81021fa7f
commit
80643d63a8
1 changed files with 20 additions and 0 deletions
|
@ -122,6 +122,26 @@ class PhabricatorSetup {
|
||||||
"consequences of leaving it unconfigured.\n");
|
"consequences of leaving it unconfigured.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$path = getenv('PATH');
|
||||||
|
if (empty($path)) {
|
||||||
|
self::writeFailure();
|
||||||
|
self::write(
|
||||||
|
"Setup failure! The environmental \$PATH variable is empty. ".
|
||||||
|
"Phabricator needs to execute system commands like 'svn', 'git', ".
|
||||||
|
"'hg', and 'diff'. Set up your webserver so that it passes a valid ".
|
||||||
|
"\$PATH to the PHP process.\n\n");
|
||||||
|
if (php_sapi_name() == 'fpm-fcgi') {
|
||||||
|
self::write(
|
||||||
|
"You're running php-fpm, so the easiest way to do this is to add ".
|
||||||
|
"this line to your php-fpm.conf:\n\n".
|
||||||
|
" env[PATH] = /usr/local/bin:/usr/bin:/bin\n\n".
|
||||||
|
"Then restart php-fpm.\n");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
self::write(" okay \$PATH is nonempty.\n");
|
||||||
|
}
|
||||||
|
|
||||||
self::write("[OKAY] Core configuration OKAY.\n");
|
self::write("[OKAY] Core configuration OKAY.\n");
|
||||||
|
|
||||||
self::writeHeader("REQUIRED PHP EXTENSIONS");
|
self::writeHeader("REQUIRED PHP EXTENSIONS");
|
||||||
|
|
Loading…
Reference in a new issue