Marius Burkard
2016-07-10 e1ceb050e19c7574bca146a8da7047ee4ff456b5
server/mods-available/web_module.inc.php
@@ -203,7 +203,7 @@
         $daemon = $web_config['server_type'];
         break;
      default:
         if(is_file($conf['init_scripts'] . '/' . 'httpd')) {
         if(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) {
            $daemon = 'httpd';
         } else {
            $daemon = 'apache2';
@@ -212,16 +212,35 @@
      $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');
      }
      
      // 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 && is_executable('/usr/sbin/nginx')){
         exec('/usr/sbin/nginx -t 2>&1', $retval['output'], $retval['retval']);
      if($web_config['server_type'] == 'nginx'){
         $app->log("Checking nginx configuration...", LOGLEVEL_DEBUG);
         exec('nginx -t 2>&1', $retval['output'], $retval['retval']);
         if($retval['retval'] == 0){
            $app->log("nginx configuration ok!", LOGLEVEL_DEBUG);
         } else {
            $app->log("nginx config test failed!", LOGLEVEL_DEBUG);
            return $retval;
         }
      }
      exec($cmd.' 2>&1', $retval['output'], $retval['retval']);
      // if restart failed despite successful syntax check => try again
      if($web_config['server_type'] == 'nginx' && $retval['retval'] > 0){
         sleep(2);
         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){
         //exec('nginx -t 2>&1', $retval['output'], $retval['retval']);
      //}
      return $retval;
   }
@@ -246,16 +265,37 @@
            // @see: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376
            if(file_exists('/etc/os-release')) {
               $tmp = file_get_contents('/etc/os-release');
               if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp)) {
               //if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp)) {
               if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp) && stristr(phpversion(), 'deb.sury.org') === false) {
                  $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);
            }
         }
                        */
      }
      $retval = array('output' => '', 'retval' => 0);
      exec($initcommand.' 2>&1', $retval['output'], $retval['retval']);
      $app->log("Restarting php-fpm: $initcommand", LOGLEVEL_DEBUG);
      return $retval;
   }