Merge pull request #3625 from Icinga/bugfix/web-serve

icingacli web serve: preserve console colors and avoid redundand process
This commit is contained in:
Johannes Meyer 2019-05-22 12:22:10 +02:00 committed by GitHub
commit ed21fe280e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 12 deletions

View File

@ -55,20 +55,12 @@ class WebCommand extends Command
$this->forkAndExit();
}
echo "Serving Icinga Web 2 from directory $documentRoot and listening on $socket\n";
$cmd = sprintf(
'%s -S %s -t %s %s',
readlink('/proc/self/exe'),
$socket,
$documentRoot,
Icinga::app()->getLibraryDir('/Icinga/Application/webrouter.php')
);
// TODO: Store webserver log, switch uid, log index.php includes, pid file
if ($fork) {
exec($cmd);
} else {
passthru($cmd);
}
pcntl_exec(
readlink('/proc/self/exe'),
['-S', $socket, '-t', $documentRoot, Icinga::app()->getLibraryDir('/Icinga/Application/webrouter.php')]
);
}
public function stopAction()
@ -93,6 +85,17 @@ class WebCommand extends Command
// pcntl_wait($status);
} else {
// child
// Replace console with /dev/null by first freeing the (lowest possible) FDs 0, 1 and 2
// and then opening /dev/null once for every one of them (open(2) chooses the lowest free FD).
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
fopen('/dev/null', 'rb');
fopen('/dev/null', 'wb');
fopen('/dev/null', 'wb');
}
}
}