Till Brehm
2014-09-24 6d6643de2b6fc47b15e27c46266f22866c1cd1a8
Fixed service restart problems on CentOS 7.
2 files modified
26 ■■■■ changed files
server/lib/classes/system.inc.php 2 ●●● patch | view | raw | blame | history
server/mods-available/web_module.inc.php 24 ●●●● patch | view | raw | blame | history
server/lib/classes/system.inc.php
@@ -1722,7 +1722,7 @@
    function getinitcommand($servicename, $action, $init_script_directory = ''){
        global $conf;
        // systemd
        if(is_executable('/bin/systemd')){
        if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){
            return 'systemctl '.$action.' '.$servicename.'.service';
        }
        // upstart
server/mods-available/web_module.inc.php
@@ -212,11 +212,12 @@
        $retval = array('output' => '', 'retval' => 0);
        if($action == 'restart') {
            exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']);
            $cmd = $app->system->getinitcommand($daemon, 'restart');
        } else {
            exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']);
            $cmd = $app->system->getinitcommand($daemon, 'reload');
        }
        exec($cmd.' 2>&1', $retval['output'], $retval['retval']);
        $app->log("Restarting httpd: $cmd", LOGLEVEL_DEBUG);
        
        // nginx: do a syntax check because on some distributions, the init script always returns 0 - even if the syntax is not ok (how stupid is that?)
        if($web_config['server_type'] == 'nginx' && $retval['retval'] == 0){
@@ -249,6 +250,22 @@
                    if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp)) {
                        $initcommand = '/sbin/start-stop-daemon --stop --signal USR2 --quiet --pidfile /var/run/php5-fpm.pid --name php5-fpm';
                    }
                    // And the next workaround, php-fpm reloads in centos 7 downt work as well.
                    if(preg_match('/^ID=centos/m', $tmp) && preg_match('/^VERSION_ID="7"/m', $tmp)) {
                        $initcommand = 'systemctl restart php-fpm.service';
                    }
                    unset($tmp);
                }
            }
            if($action == 'reload') {
                // And the next workaround, php-fpm reloads in centos 7 downt work as well.
                if(file_exists('/etc/os-release')) {
                    $tmp = file_get_contents('/etc/os-release');
                    // And the next workaround, php-fpm reloads in centos 7 downt work as well.
                    if(preg_match('/^ID="centos"/m', $tmp) && preg_match('/^VERSION_ID="7"/m', $tmp)) {
                        $initcommand = 'systemctl restart php-fpm.service';
                    }
                    unset($tmp);
                }
            }
@@ -256,6 +273,7 @@
        $retval = array('output' => '', 'retval' => 0);
        exec($initcommand.' 2>&1', $retval['output'], $retval['retval']);
        $app->log("Restarting php-fpm: $initcommand", LOGLEVEL_DEBUG);
        return $retval;
    }